diff --git a/mozilla/allmakefiles.sh b/mozilla/allmakefiles.sh index 1ea99a3b9f3..649dc708141 100755 --- a/mozilla/allmakefiles.sh +++ b/mozilla/allmakefiles.sh @@ -192,6 +192,7 @@ js/src/xpconnect/shell/Makefile js/src/xpconnect/src/Makefile js/src/xpconnect/tests/Makefile js/src/xpconnect/tests/components/Makefile +js/src/xpconnect/tests/idl/Makefile js/src/xpconnect/shell/Makefile # js/src/xpconnect/md/Makefile # js/src/xpconnect/md/unix/Makefile diff --git a/mozilla/caps/idl/nsIScriptSecurityManager.idl b/mozilla/caps/idl/nsIScriptSecurityManager.idl index 148e95d54dc..38db0ec003f 100644 --- a/mozilla/caps/idl/nsIScriptSecurityManager.idl +++ b/mozilla/caps/idl/nsIScriptSecurityManager.idl @@ -1,4 +1,4 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- * * The contents of this file are subject to the Netscape Public * License Version 1.1 (the "License"); you may not use this file @@ -23,7 +23,11 @@ #include "nsISupports.idl" #include "nsIPrincipal.idl" -interface nsIScriptContext; +%{C++ +#include "jspubtd.h" +%} +[ptr] native JSContextPtr(JSContext); + interface nsIURI; [uuid(58df5780-8006-11d2-bd91-00805f8ae3f4)] @@ -33,13 +37,13 @@ interface nsIScriptSecurityManager : nsISupports * Checks whether the currently executing script can access the given * property. * - * @param cx The current active script context + * @param cx The current active JavaScript context * @param obj The object that is being accessed * @param prop The ordinal of the property being accessed (see nsDOMPropEnums.h) * @param isWrite True if write access is being attempted * @return True if access is granted */ - boolean CheckScriptAccess(in nsIScriptContext cx, in voidStar obj, + boolean CheckScriptAccess(in JSContextPtr cx, in voidStar obj, in long prop, in boolean isWrite); /** @@ -48,7 +52,7 @@ interface nsIScriptSecurityManager : nsISupports * Will return error code NS_ERROR_DOM_BAD_URI if the load request * should be denied. */ - void CheckLoadURIFromScript(in nsIScriptContext cx, in nsIURI uri); + void CheckLoadURIFromScript(in JSContextPtr cx, in nsIURI uri); /** * Check that content from "from" can load "uri". diff --git a/mozilla/caps/src/nsScriptSecurityManager.cpp b/mozilla/caps/src/nsScriptSecurityManager.cpp index d52f0c36227..1d6688ace20 100644 --- a/mozilla/caps/src/nsScriptSecurityManager.cpp +++ b/mozilla/caps/src/nsScriptSecurityManager.cpp @@ -1,4 +1,4 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- * * The contents of this file are subject to the Netscape Public * License Version 1.1 (the "License"); you may not use this file @@ -345,7 +345,7 @@ SetBit(unsigned char *bitVector, PRInt32 index) /////////////////////////////////////////////////// NS_IMETHODIMP -nsScriptSecurityManager::CheckScriptAccess(nsIScriptContext *aContext, +nsScriptSecurityManager::CheckScriptAccess(JSContext *cx, void *aObj, PRInt32 domPropInt, PRBool isWrite, PRBool *aResult) { @@ -356,7 +356,6 @@ nsScriptSecurityManager::CheckScriptAccess(nsIScriptContext *aContext, *aResult = PR_TRUE; return NS_OK; } - JSContext *cx = (JSContext *)aContext->GetNativeContext(); nsXPIDLCString capability; PRInt32 secLevel = GetSecurityLevel(cx, domProp, isWrite, getter_Copies(capability)); @@ -380,11 +379,10 @@ nsScriptSecurityManager::CheckScriptAccess(nsIScriptContext *aContext, } NS_IMETHODIMP -nsScriptSecurityManager::CheckLoadURIFromScript(nsIScriptContext *aContext, +nsScriptSecurityManager::CheckLoadURIFromScript(JSContext *cx, nsIURI *aURI) { // Get principal of currently executing script. - JSContext *cx = (JSContext*) aContext->GetNativeContext(); nsCOMPtr principal; if (NS_FAILED(GetSubjectPrincipal(cx, getter_AddRefs(principal)))) { return NS_ERROR_FAILURE; @@ -1035,6 +1033,7 @@ nsScriptSecurityManager::CheckXPCPermissions(JSContext *aJSContext) return NS_OK; } +/* THIS IS A SORTED LIST. IT MUST STAY THAT WAY */ static char *domPropNames[NS_DOM_PROP_MAX] = { "appcoresmanager.add", "appcoresmanager.find", diff --git a/mozilla/content/base/src/nsDocument.cpp b/mozilla/content/base/src/nsDocument.cpp index 23e506eebd7..53eaef97aaf 100644 --- a/mozilla/content/base/src/nsDocument.cpp +++ b/mozilla/content/base/src/nsDocument.cpp @@ -80,6 +80,7 @@ #include "nsDOMError.h" #include "nsIScrollableView.h" #include "nsIFrame.h" +#include "nsLayoutUtils.h" #include "nsIScriptSecurityManager.h" @@ -2473,17 +2474,17 @@ nsresult nsDocument::RemoveEventListener(const nsString& aType, nsIDOMEventListe return NS_ERROR_FAILURE; } -PRBool nsDocument::AddProperty(JSContext *aContext, jsval aID, jsval *aVp) +PRBool nsDocument::AddProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { return PR_TRUE; } -PRBool nsDocument::DeleteProperty(JSContext *aContext, jsval aID, jsval *aVp) +PRBool nsDocument::DeleteProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { return PR_TRUE; } -PRBool nsDocument::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) +PRBool nsDocument::GetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { PRBool result = PR_TRUE; @@ -2492,7 +2493,7 @@ PRBool nsDocument::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) if (mScriptGlobalObject) { nsCOMPtr window(do_QueryInterface(mScriptGlobalObject)); if(window) { - result = window->GetProperty(aContext, aID, aVp); + result = window->GetProperty(aContext, aObj, aID, aVp); } else { result = PR_FALSE; @@ -2503,7 +2504,7 @@ PRBool nsDocument::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) return result; } -PRBool nsDocument::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) +PRBool nsDocument::SetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { PRBool result = PR_TRUE; @@ -2518,8 +2519,9 @@ PRBool nsDocument::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) if (atom.get() == nsLayoutAtoms::onmousedown || atom.get() == nsLayoutAtoms::onmouseup || atom.get() == nsLayoutAtoms::onclick || atom.get() == nsLayoutAtoms::onmouseover || atom.get() == nsLayoutAtoms::onmouseout) { if (NS_OK == GetListenerManager(&mManager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMMouseListenerIID)) { + nsCOMPtr mScriptCX; + if(NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMMouseListenerIID)) { NS_RELEASE(mManager); return PR_FALSE; } @@ -2527,8 +2529,9 @@ PRBool nsDocument::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) } else if (atom.get() == nsLayoutAtoms::onkeydown || atom.get() == nsLayoutAtoms::onkeyup || atom.get() == nsLayoutAtoms::onkeypress) { if (NS_OK == GetListenerManager(&mManager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMKeyListenerIID)) { + nsCOMPtr mScriptCX; + if(NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMKeyListenerIID)) { NS_RELEASE(mManager); return PR_FALSE; } @@ -2536,8 +2539,9 @@ PRBool nsDocument::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) } else if (atom.get() == nsLayoutAtoms::onmousemove) { if (NS_OK == GetListenerManager(&mManager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMMouseMotionListenerIID)) { + nsCOMPtr mScriptCX; + if(NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMMouseMotionListenerIID)) { NS_RELEASE(mManager); return PR_FALSE; } @@ -2545,8 +2549,9 @@ PRBool nsDocument::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) } else if (atom.get() == nsLayoutAtoms::onfocus || atom.get() == nsLayoutAtoms::onblur) { if (NS_OK == GetListenerManager(&mManager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMFocusListenerIID)) { + nsCOMPtr mScriptCX; + if(NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMFocusListenerIID)) { NS_RELEASE(mManager); return PR_FALSE; } @@ -2555,8 +2560,9 @@ PRBool nsDocument::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) else if (atom.get() == nsLayoutAtoms::onsubmit || atom.get() == nsLayoutAtoms::onreset || atom.get() == nsLayoutAtoms::onchange || atom.get() == nsLayoutAtoms::onselect) { if (NS_OK == GetListenerManager(&mManager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMFormListenerIID)) { + nsCOMPtr mScriptCX; + if(NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMFormListenerIID)) { NS_RELEASE(mManager); return PR_FALSE; } @@ -2565,8 +2571,9 @@ PRBool nsDocument::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) else if (atom.get() == nsLayoutAtoms::onload || atom.get() == nsLayoutAtoms::onunload || atom.get() == nsLayoutAtoms::onabort || atom.get() == nsLayoutAtoms::onerror) { if (NS_OK == GetListenerManager(&mManager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMLoadListenerIID)) { + nsCOMPtr mScriptCX; + if(NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMLoadListenerIID)) { NS_RELEASE(mManager); return PR_FALSE; } @@ -2574,9 +2581,9 @@ PRBool nsDocument::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) } else if (atom.get() == nsLayoutAtoms::onpaint) { if (NS_OK == GetListenerManager(&mManager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *) - JS_GetContextPrivate(aContext); - if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, + nsCOMPtr mScriptCX; + if(NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMPaintListenerIID)) { NS_RELEASE(mManager); return PR_FALSE; @@ -2591,7 +2598,7 @@ PRBool nsDocument::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) if (mScriptGlobalObject) { nsCOMPtr window(do_QueryInterface(mScriptGlobalObject)); if(window) { - result = window->SetProperty(aContext, aID, aVp); + result = window->SetProperty(aContext, aObj, aID, aVp); } else { result = PR_FALSE; @@ -2602,22 +2609,22 @@ PRBool nsDocument::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) return result; } -PRBool nsDocument::EnumerateProperty(JSContext *aContext) +PRBool nsDocument::EnumerateProperty(JSContext *aContext, JSObject *aObj) { return PR_TRUE; } -PRBool nsDocument::Resolve(JSContext *aContext, jsval aID) +PRBool nsDocument::Resolve(JSContext *aContext, JSObject *aObj, jsval aID) { return PR_TRUE; } -PRBool nsDocument::Convert(JSContext *aContext, jsval aID) +PRBool nsDocument::Convert(JSContext *aContext, JSObject *aObj, jsval aID) { return PR_TRUE; } -void nsDocument::Finalize(JSContext *aContext) +void nsDocument::Finalize(JSContext *aContext, JSObject *aObj) { } @@ -3098,3 +3105,4 @@ PRBool nsDocument::GetDisplaySelection() const { return mDisplaySelection; } + diff --git a/mozilla/content/base/src/nsDocument.h b/mozilla/content/base/src/nsDocument.h index 8a21064f109..97bc288c85f 100644 --- a/mozilla/content/base/src/nsDocument.h +++ b/mozilla/content/base/src/nsDocument.h @@ -401,14 +401,18 @@ public: virtual PRBool GetDisplaySelection() const; // 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); + virtual PRBool AddProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + virtual PRBool DeleteProperty(JSContext *aContext, + JSObject *aObj, jsval aID, jsval *aVp); + virtual PRBool GetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + virtual PRBool SetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + virtual PRBool EnumerateProperty(JSContext *aContext, JSObject *aObj); + virtual PRBool Resolve(JSContext *aContext, JSObject *aObj, jsval aID); + virtual PRBool Convert(JSContext *aContext, JSObject *aObj, jsval aID); + virtual void Finalize(JSContext *aContext, JSObject *aObj); /** * Methods to output the document contents as Text or HTML, outputting into diff --git a/mozilla/content/base/src/nsGenericElement.cpp b/mozilla/content/base/src/nsGenericElement.cpp index e87a1a9f5a5..965a2fb92b3 100644 --- a/mozilla/content/base/src/nsGenericElement.cpp +++ b/mozilla/content/base/src/nsGenericElement.cpp @@ -62,6 +62,7 @@ #include "nsLayoutAtoms.h" #include "nsHTMLAtoms.h" +#include "nsLayoutUtils.h" NS_DEFINE_IID(kIDOMNodeIID, NS_IDOMNODE_IID); NS_DEFINE_IID(kIDOMElementIID, NS_IDOMELEMENT_IID); @@ -1079,25 +1080,25 @@ nsGenericElement::RemoveEventListener(const nsString& aType, nsIDOMEventListener // nsIJSScriptObject implementation PRBool -nsGenericElement::AddProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsGenericElement::AddProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { return PR_TRUE; } PRBool -nsGenericElement::DeleteProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsGenericElement::DeleteProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { return PR_TRUE; } PRBool -nsGenericElement::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsGenericElement::GetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { return PR_TRUE; } PRBool -nsGenericElement::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsGenericElement::SetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { nsIScriptObjectOwner *owner; @@ -1116,8 +1117,9 @@ nsGenericElement::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) if (atom.get() == nsLayoutAtoms::onmousedown || atom.get() == nsLayoutAtoms::onmouseup || atom.get() == nsLayoutAtoms::onclick || atom.get() == nsLayoutAtoms::onmouseover || atom.get() == nsLayoutAtoms::onmouseout) { if (NS_OK == GetListenerManager(&manager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, atom, kIDOMMouseListenerIID)) { + nsCOMPtr mScriptCX; + if (NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)GetDOMSlots()->mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, atom, kIDOMMouseListenerIID)) { NS_RELEASE(manager); return PR_FALSE; } @@ -1125,8 +1127,9 @@ nsGenericElement::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) } else if (atom.get() == nsLayoutAtoms::onkeydown || atom.get() == nsLayoutAtoms::onkeyup || atom.get() == nsLayoutAtoms::onkeypress) { if (NS_OK == GetListenerManager(&manager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, atom, kIDOMKeyListenerIID)) { + nsCOMPtr mScriptCX; + if (NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)GetDOMSlots()->mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, atom, kIDOMKeyListenerIID)) { NS_RELEASE(manager); return PR_FALSE; } @@ -1134,8 +1137,9 @@ nsGenericElement::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) } else if (atom.get() == nsLayoutAtoms::onmousemove) { if (NS_OK == GetListenerManager(&manager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, atom, kIDOMMouseMotionListenerIID)) { + nsCOMPtr mScriptCX; + if (NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)GetDOMSlots()->mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, atom, kIDOMMouseMotionListenerIID)) { NS_RELEASE(manager); return PR_FALSE; } @@ -1143,8 +1147,9 @@ nsGenericElement::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) } else if (atom.get() == nsLayoutAtoms::onfocus || atom.get() == nsLayoutAtoms::onblur) { if (NS_OK == GetListenerManager(&manager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, atom, kIDOMFocusListenerIID)) { + nsCOMPtr mScriptCX; + if (NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)GetDOMSlots()->mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, atom, kIDOMFocusListenerIID)) { NS_RELEASE(manager); return PR_FALSE; } @@ -1153,8 +1158,9 @@ nsGenericElement::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) else if (atom.get() == nsLayoutAtoms::onsubmit || atom.get() == nsLayoutAtoms::onreset || atom.get() == nsLayoutAtoms::onchange || atom.get() == nsLayoutAtoms::onselect) { if (NS_OK == GetListenerManager(&manager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, atom, kIDOMFormListenerIID)) { + nsCOMPtr mScriptCX; + if (NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)GetDOMSlots()->mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, atom, kIDOMFormListenerIID)) { NS_RELEASE(manager); return PR_FALSE; } @@ -1163,8 +1169,9 @@ nsGenericElement::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) else if (atom.get() == nsLayoutAtoms::onload || atom.get() == nsLayoutAtoms::onunload || atom.get() == nsLayoutAtoms::onabort || atom.get() == nsLayoutAtoms::onerror) { if (NS_OK == GetListenerManager(&manager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, atom, kIDOMLoadListenerIID)) { + nsCOMPtr mScriptCX; + if (NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)GetDOMSlots()->mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, atom, kIDOMLoadListenerIID)) { NS_RELEASE(manager); return PR_FALSE; } @@ -1172,9 +1179,9 @@ nsGenericElement::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) } else if (atom.get() == nsLayoutAtoms::onpaint) { if (NS_OK == GetListenerManager(&manager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *) - JS_GetContextPrivate(aContext); - if (NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, + nsCOMPtr mScriptCX; + if (NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)GetDOMSlots()->mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, atom, kIDOMPaintListenerIID)) { NS_RELEASE(manager); return PR_FALSE; @@ -1191,25 +1198,25 @@ nsGenericElement::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) } PRBool -nsGenericElement::EnumerateProperty(JSContext *aContext) +nsGenericElement::EnumerateProperty(JSContext *aContext, JSObject *aObj) { return PR_TRUE; } PRBool -nsGenericElement::Resolve(JSContext *aContext, jsval aID) +nsGenericElement::Resolve(JSContext *aContext, JSObject *aObj, jsval aID) { return PR_TRUE; } PRBool -nsGenericElement::Convert(JSContext *aContext, jsval aID) +nsGenericElement::Convert(JSContext *aContext, JSObject *aObj, jsval aID) { return PR_TRUE; } void -nsGenericElement::Finalize(JSContext *aContext) +nsGenericElement::Finalize(JSContext *aContext, JSObject *aObj) { } @@ -2218,3 +2225,4 @@ nsGenericContainerElement::SizeOf(nsISizeOfHandler* aSizer, PRUint32* aResult, *aResult = sum; return NS_OK; } + diff --git a/mozilla/content/base/src/nsGenericElement.h b/mozilla/content/base/src/nsGenericElement.h index 60c2a42d52d..042c5cb2841 100644 --- a/mozilla/content/base/src/nsGenericElement.h +++ b/mozilla/content/base/src/nsGenericElement.h @@ -170,14 +170,18 @@ public: size_t aInstanceSize) const; // Implementation for nsIJSScriptObject - PRBool AddProperty(JSContext *aContext, jsval aID, jsval *aVp); - PRBool DeleteProperty(JSContext *aContext, jsval aID, jsval *aVp); - PRBool GetProperty(JSContext *aContext, jsval aID, jsval *aVp); - PRBool SetProperty(JSContext *aContext, jsval aID, jsval *aVp); - PRBool EnumerateProperty(JSContext *aContext); - PRBool Resolve(JSContext *aContext, jsval aID); - PRBool Convert(JSContext *aContext, jsval aID); - void Finalize(JSContext *aContext); + PRBool AddProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool DeleteProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool GetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool SetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool EnumerateProperty(JSContext *aContext, JSObject *aObj); + PRBool Resolve(JSContext *aContext, JSObject *aObj, jsval aID); + PRBool Convert(JSContext *aContext, JSObject *aObj, jsval aID); + void Finalize(JSContext *aContext, JSObject *aObj); // Implementation for nsISupports NS_IMETHOD QueryInterface(REFNSIID aIID, diff --git a/mozilla/content/html/content/src/nsHTMLFormElement.cpp b/mozilla/content/html/content/src/nsHTMLFormElement.cpp index 04151453fc3..cfbe0fb3437 100644 --- a/mozilla/content/html/content/src/nsHTMLFormElement.cpp +++ b/mozilla/content/html/content/src/nsHTMLFormElement.cpp @@ -41,6 +41,7 @@ #include "nsIFrame.h" #include "nsISizeOfHandler.h" #include "nsIScriptGlobalObject.h" +#include "nsLayoutUtils.h" static NS_DEFINE_IID(kIDOMHTMLFormElementIID, NS_IDOMHTMLFORMELEMENT_IID); static NS_DEFINE_IID(kIFormControlIID, NS_IFORMCONTROL_IID); @@ -112,14 +113,18 @@ public: NS_IMPL_IHTMLCONTENT_USING_GENERIC(mInner) // 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); + PRBool AddProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool DeleteProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool GetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool SetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool EnumerateProperty(JSContext *aContext, JSObject *aObj); + PRBool Resolve(JSContext *aContext, JSObject *aObj, jsval aID); + PRBool Convert(JSContext *aContext, JSObject *aObj, jsval aID); + void Finalize(JSContext *aContext, JSObject *aObj); // nsIForm NS_IMETHOD AddElement(nsIFormControl* aElement); @@ -520,37 +525,37 @@ nsHTMLFormElement::NamedItem(const nsString& aName, nsIDOMElement** aReturn) } PRBool -nsHTMLFormElement::AddProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsHTMLFormElement::AddProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { - return mInner.AddProperty(aContext, aID, aVp); + return mInner.AddProperty(aContext, aObj, aID, aVp); } PRBool -nsHTMLFormElement::DeleteProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsHTMLFormElement::DeleteProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { - return mInner.DeleteProperty(aContext, aID, aVp); + return mInner.DeleteProperty(aContext, aObj, aID, aVp); } PRBool -nsHTMLFormElement::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsHTMLFormElement::GetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { - return mInner.GetProperty(aContext, aID, aVp); + return mInner.GetProperty(aContext, aObj, aID, aVp); } PRBool -nsHTMLFormElement::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsHTMLFormElement::SetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { - return mInner.SetProperty(aContext, aID, aVp); + return mInner.SetProperty(aContext, aObj, aID, aVp); } PRBool -nsHTMLFormElement::EnumerateProperty(JSContext *aContext) +nsHTMLFormElement::EnumerateProperty(JSContext *aContext, JSObject *aObj) { - return mInner.EnumerateProperty(aContext); + return mInner.EnumerateProperty(aContext, aObj); } PRBool -nsHTMLFormElement::Resolve(JSContext *aContext, jsval aID) +nsHTMLFormElement::Resolve(JSContext *aContext, JSObject *aObj, jsval aID) { nsCOMPtr element; char* str = JS_GetStringBytes(JS_ValueToString(aContext, aID)); @@ -564,25 +569,13 @@ nsHTMLFormElement::Resolve(JSContext *aContext, jsval aID) if (owner) { nsCOMPtr scriptContext; - - if (nsnull != mInner.mDocument) { - nsCOMPtr globalObject; - mInner.mDocument->GetScriptGlobalObject(getter_AddRefs(globalObject)); - if (globalObject) { - result = globalObject->GetContext(getter_AddRefs(scriptContext)); - } - } - else { - scriptContext = dont_AddRef((nsIScriptContext*)JS_GetContextPrivate(aContext)); - } - - JSObject* obj; + nsLayoutUtils::GetStaticScriptContext(aContext, aObj, + getter_AddRefs(scriptContext)); if (scriptContext) { + JSObject* obj; result = owner->GetScriptObject(scriptContext, (void**)&obj); if (NS_SUCCEEDED(result) && (nsnull != obj)) { - JSObject* myObj; - result = mInner.GetScriptObject(scriptContext, (void**)&myObj); - ret = ::JS_DefineProperty(aContext, myObj, + ret = ::JS_DefineProperty(aContext, aObj, str, OBJECT_TO_JSVAL(obj), nsnull, nsnull, 0); } @@ -590,7 +583,7 @@ nsHTMLFormElement::Resolve(JSContext *aContext, jsval aID) } } else { - ret = mInner.Resolve(aContext, aID); + ret = mInner.Resolve(aContext, aObj, aID); } if (NS_FAILED(result)) { @@ -601,15 +594,15 @@ nsHTMLFormElement::Resolve(JSContext *aContext, jsval aID) } PRBool -nsHTMLFormElement::Convert(JSContext *aContext, jsval aID) +nsHTMLFormElement::Convert(JSContext *aContext, JSObject *aObj, jsval aID) { - return mInner.Convert(aContext, aID); + return mInner.Convert(aContext, aObj, aID); } void -nsHTMLFormElement::Finalize(JSContext *aContext) +nsHTMLFormElement::Finalize(JSContext *aContext, JSObject *aObj) { - mInner.Finalize(aContext); + mInner.Finalize(aContext, aObj); } NS_IMETHODIMP diff --git a/mozilla/content/html/content/src/nsHTMLImageElement.cpp b/mozilla/content/html/content/src/nsHTMLImageElement.cpp index 6a43b0d4747..bedb49fe6b9 100644 --- a/mozilla/content/html/content/src/nsHTMLImageElement.cpp +++ b/mozilla/content/html/content/src/nsHTMLImageElement.cpp @@ -45,7 +45,9 @@ #include "nsIURL.h" #include "nsIServiceManager.h" #include "nsNetUtil.h" +#include "nsLayoutUtils.h" #include "nsIWebShell.h" + static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); // XXX nav attrs: suppress @@ -119,18 +121,22 @@ public: NS_IMPL_IHTMLCONTENT_USING_GENERIC(mInner) // 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); + PRBool AddProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool DeleteProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool GetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool SetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool EnumerateProperty(JSContext *aContext, JSObject *aObj); + PRBool Resolve(JSContext *aContext, JSObject *aObj, jsval aID); + PRBool Convert(JSContext *aContext, JSObject *aObj, jsval aID); + void Finalize(JSContext *aContext, JSObject *aObj); // nsIJSNativeInitializer - NS_IMETHOD Initialize(JSContext* aContext, PRUint32 argc, jsval *argv); - + NS_IMETHOD Initialize(JSContext* aContext, JSObject *aObj, + PRUint32 argc, jsval *argv); nsresult SetSrcInner(nsIURI* aBaseURL, const nsString& aSrc); nsresult GetCallerSourceURL(JSContext* cx, nsIURI** sourceURL); @@ -338,19 +344,19 @@ nsHTMLImageElement::HandleDOMEvent(nsIPresContext* aPresContext, } PRBool -nsHTMLImageElement::AddProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsHTMLImageElement::AddProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { - return mInner.AddProperty(aContext, aID, aVp); + return mInner.AddProperty(aContext, aObj, aID, aVp); } PRBool -nsHTMLImageElement::DeleteProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsHTMLImageElement::DeleteProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { - return mInner.DeleteProperty(aContext, aID, aVp); + return mInner.DeleteProperty(aContext, aObj, aID, aVp); } PRBool -nsHTMLImageElement::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsHTMLImageElement::GetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { PRBool result = PR_TRUE; @@ -376,7 +382,7 @@ nsHTMLImageElement::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) } } - return mInner.GetProperty(aContext, aID, aVp); + return mInner.GetProperty(aContext, aObj, aID, aVp); } nsresult @@ -384,24 +390,26 @@ nsHTMLImageElement::GetCallerSourceURL(JSContext* cx, nsIURI** sourceURL) { // XXX Code duplicated from nsHTMLDocument + // XXX Question, why does this return NS_OK on failure? nsresult result = NS_OK; - nsIScriptContext* context = (nsIScriptContext*)JS_GetContextPrivate(cx); - - if (nsnull != context) { - nsCOMPtr global; - global = dont_AddRef(context->GetGlobalObject()); - if (global) { - nsCOMPtr webShell; - - global->GetWebShell(getter_AddRefs(webShell)); - if (webShell) { - const PRUnichar* url; + // We need to use the dynamically scoped global and assume that the + // current JSContext is a DOM context with a nsIScriptGlobalObject so + // that we can get the url of the caller. + // XXX This will fail on non-DOM contexts :( - // XXX Ughh - incorrect ownership rules for url? - webShell->GetURL(&url); - result = NS_NewURI(sourceURL, url); - } + nsCOMPtr global; + nsLayoutUtils::GetDynamicScriptGlobal(cx, getter_AddRefs(global)); + if (global) { + nsCOMPtr webShell; + + global->GetWebShell(getter_AddRefs(webShell)); + if (webShell) { + const PRUnichar* url; + + // XXX Ughh - incorrect ownership rules for url? + webShell->GetURL(&url); + result = NS_NewURI(sourceURL, url); } } @@ -409,7 +417,7 @@ nsHTMLImageElement::GetCallerSourceURL(JSContext* cx, } PRBool -nsHTMLImageElement::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsHTMLImageElement::SetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { nsresult result = NS_OK; @@ -442,39 +450,40 @@ nsHTMLImageElement::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) } } else { - result = mInner.SetProperty(aContext, aID, aVp); + result = mInner.SetProperty(aContext, aObj, aID, aVp); } return (result == NS_OK); } PRBool -nsHTMLImageElement::EnumerateProperty(JSContext *aContext) +nsHTMLImageElement::EnumerateProperty(JSContext *aContext, JSObject *aObj) { - return mInner.EnumerateProperty(aContext); + return mInner.EnumerateProperty(aContext, aObj); } PRBool -nsHTMLImageElement::Resolve(JSContext *aContext, jsval aID) +nsHTMLImageElement::Resolve(JSContext *aContext, JSObject *aObj, jsval aID) { - return mInner.Resolve(aContext, aID); + return mInner.Resolve(aContext, aObj, aID); } PRBool -nsHTMLImageElement::Convert(JSContext *aContext, jsval aID) +nsHTMLImageElement::Convert(JSContext *aContext, JSObject *aObj, jsval aID) { - return mInner.Convert(aContext, aID); + return mInner.Convert(aContext, aObj, aID); } void -nsHTMLImageElement::Finalize(JSContext *aContext) +nsHTMLImageElement::Finalize(JSContext *aContext, JSObject *aObj) { - mInner.Finalize(aContext); + mInner.Finalize(aContext, aObj); } NS_IMETHODIMP -nsHTMLImageElement::Initialize(JSContext* aContext, +nsHTMLImageElement::Initialize(JSContext* aContext, + JSObject *aObj, PRUint32 argc, jsval *argv) { @@ -483,30 +492,26 @@ nsHTMLImageElement::Initialize(JSContext* aContext, // XXX This element is created unattached to any document. Later // on, it might be used to preload the image cache. For that, we // need a document (actually a pres context). The only way to get - // one is to associate the image with one at creation time, through - // the JSContext passed in. This mechanism is **UGLY** and makes - // some hard assumptions about the relationship between JSContexts - // and documents. + // one is to associate the image with one at creation time. + // This is safer than it used to be since we get the global object + // from the static scope chain rather than through the JSCOntext. - nsIScriptContext* scriptContext; - scriptContext = (nsIScriptContext*)JS_GetContextPrivate(aContext); - if (nsnull != scriptContext) { - nsIScriptGlobalObject* globalObject = scriptContext->GetGlobalObject(); - if (nsnull != globalObject) { - nsIDOMWindow* domWindow; - result = globalObject->QueryInterface(kIDOMWindowIID, (void**)&domWindow); + nsCOMPtr globalObject; + nsLayoutUtils::GetStaticScriptGlobal(aContext, aObj, + getter_AddRefs(globalObject));; + if (globalObject) { + nsIDOMWindow* domWindow; + result = globalObject->QueryInterface(kIDOMWindowIID, (void**)&domWindow); + if (NS_SUCCEEDED(result)) { + nsIDOMDocument* domDocument; + result = domWindow->GetDocument(&domDocument); if (NS_SUCCEEDED(result)) { - nsIDOMDocument* domDocument; - result = domWindow->GetDocument(&domDocument); - if (NS_SUCCEEDED(result)) { - // Maintain the reference - result = domDocument->QueryInterface(kIDocumentIID, - (void**)&mOwnerDocument); - NS_RELEASE(domDocument); - } - NS_RELEASE(domWindow); + // Maintain the reference + result = domDocument->QueryInterface(kIDocumentIID, + (void**)&mOwnerDocument); + NS_RELEASE(domDocument); } - NS_RELEASE(globalObject); + NS_RELEASE(domWindow); } } diff --git a/mozilla/content/html/content/src/nsHTMLOptionElement.cpp b/mozilla/content/html/content/src/nsHTMLOptionElement.cpp index 369a16644c0..354a79bbc02 100644 --- a/mozilla/content/html/content/src/nsHTMLOptionElement.cpp +++ b/mozilla/content/html/content/src/nsHTMLOptionElement.cpp @@ -115,7 +115,8 @@ public: NS_IMPL_IHTMLCONTENT_USING_GENERIC(mInner) // nsIJSNativeInitializer - NS_IMETHOD Initialize(JSContext* aContext, PRUint32 argc, jsval *argv); + NS_IMETHOD Initialize(JSContext* aContext, JSObject *aObj, + PRUint32 argc, jsval *argv); protected: nsGenericHTMLContainerElement mInner; @@ -556,6 +557,7 @@ nsresult nsHTMLOptionElement::GetSelect(nsIDOMHTMLSelectElement *&aSelectElement NS_IMETHODIMP nsHTMLOptionElement::Initialize(JSContext* aContext, + JSObject *aObj, PRUint32 argc, jsval *argv) { diff --git a/mozilla/content/html/content/src/nsHTMLSelectElement.cpp b/mozilla/content/html/content/src/nsHTMLSelectElement.cpp index e3ac7b696d6..84b727a3c44 100644 --- a/mozilla/content/html/content/src/nsHTMLSelectElement.cpp +++ b/mozilla/content/html/content/src/nsHTMLSelectElement.cpp @@ -78,18 +78,18 @@ public: NS_DECL_IDOMHTMLCOLLECTION // 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); + PRBool AddProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool DeleteProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool GetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool SetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool EnumerateProperty(JSContext *aContext, JSObject *aObj); + PRBool Resolve(JSContext *aContext, JSObject *aObj, jsval aID); + PRBool Convert(JSContext *aContext, JSObject *aObj, jsval aID); + void Finalize(JSContext *aContext, JSObject *aObj); void AddOption(nsIContent* aOption); void RemoveOption(nsIContent* aOption); @@ -1064,6 +1064,7 @@ nsOptionList::IndexOf(nsIContent* aOption) PRBool nsOptionList::AddProperty(JSContext *aContext, + JSObject *aObj, jsval aID, jsval *aVp) { @@ -1072,6 +1073,7 @@ nsOptionList::AddProperty(JSContext *aContext, PRBool nsOptionList::DeleteProperty(JSContext *aContext, + JSObject *aObj, jsval aID, jsval *aVp) { @@ -1080,6 +1082,7 @@ nsOptionList::DeleteProperty(JSContext *aContext, PRBool nsOptionList::GetProperty(JSContext *aContext, + JSObject *aObj, jsval aID, jsval *aVp) { @@ -1088,6 +1091,7 @@ nsOptionList::GetProperty(JSContext *aContext, PRBool nsOptionList::SetProperty(JSContext *aContext, + JSObject *aObj, jsval aID, jsval *aVp) { @@ -1150,25 +1154,25 @@ nsOptionList::SetProperty(JSContext *aContext, } PRBool -nsOptionList::EnumerateProperty(JSContext *aContext) +nsOptionList::EnumerateProperty(JSContext *aContext, JSObject *aObj) { return PR_TRUE; } PRBool -nsOptionList::Resolve(JSContext *aContext, jsval aID) +nsOptionList::Resolve(JSContext *aContext, JSObject *aObj, jsval aID) { return PR_TRUE; } PRBool -nsOptionList::Convert(JSContext *aContext, jsval aID) +nsOptionList::Convert(JSContext *aContext, JSObject *aObj, jsval aID) { return PR_TRUE; } void -nsOptionList::Finalize(JSContext *aContext) +nsOptionList::Finalize(JSContext *aContext, JSObject *aObj) { } diff --git a/mozilla/content/html/document/src/nsHTMLDocument.cpp b/mozilla/content/html/document/src/nsHTMLDocument.cpp index b30eab71540..123b9169282 100644 --- a/mozilla/content/html/document/src/nsHTMLDocument.cpp +++ b/mozilla/content/html/document/src/nsHTMLDocument.cpp @@ -88,6 +88,8 @@ #include "nsCharsetDetectionAdaptorCID.h" #include "nsICharsetAlias.h" #include "nsIPref.h" +#include "nsLayoutUtils.h" + #define DETECTOR_PROGID_MAX 127 static char g_detector_progid[DETECTOR_PROGID_MAX + 1]; static PRBool gInitDetector = PR_FALSE; @@ -1679,33 +1681,34 @@ nsHTMLDocument::GetSourceDocumentURL(JSContext* cx, // whatever connections possible. The problem is that this // could break if any of the connections along the way change. // I wish there were a better way. - nsresult result = NS_OK; *sourceURL = nsnull; - nsIScriptContext* context = (nsIScriptContext*)JS_GetContextPrivate(cx); - - if (nsnull != context) { - nsCOMPtr global; + // XXX Question, why does this return NS_OK on failure? + nsresult result = NS_OK; + + // We need to use the dynamically scoped global and assume that the + // current JSContext is a DOM context with a nsIScriptGlobalObject so + // that we can get the url of the caller. + // XXX This will fail on non-DOM contexts :( - global = dont_AddRef(context->GetGlobalObject()); - if (global) { - nsCOMPtr window(do_QueryInterface(global, &result)); + nsCOMPtr global; + nsLayoutUtils::GetDynamicScriptGlobal(cx, getter_AddRefs(global)); + if (global) { + nsCOMPtr window(do_QueryInterface(global, &result)); - if (window) { - nsCOMPtr document; - - result = window->GetDocument(getter_AddRefs(document)); - if (NS_SUCCEEDED(result)) { - nsCOMPtr doc(do_QueryInterface(document, &result)); - if (doc) { - *sourceURL = doc->GetDocumentURL(); - result = sourceURL ? NS_OK : NS_ERROR_FAILURE; - } - } + if (window) { + nsCOMPtr document; + + result = window->GetDocument(getter_AddRefs(document)); + if (NS_SUCCEEDED(result)) { + nsCOMPtr doc(do_QueryInterface(document, &result)); + if (doc) { + *sourceURL = doc->GetDocumentURL(); + result = sourceURL ? NS_OK : NS_ERROR_FAILURE; + } } } } - return result; } @@ -2570,7 +2573,7 @@ nsHTMLDocument::GetScriptObject(nsIScriptContext *aContext, void** aScriptObject } PRBool -nsHTMLDocument::Resolve(JSContext *aContext, jsval aID) +nsHTMLDocument::Resolve(JSContext *aContext, JSObject *aObj, jsval aID) { nsresult result; nsCOMPtr element; @@ -2584,33 +2587,19 @@ nsHTMLDocument::Resolve(JSContext *aContext, jsval aID) if (owner) { nsCOMPtr scriptContext; - nsCOMPtr scriptGlobal; - GetScriptGlobalObject(getter_AddRefs(scriptGlobal)); - - if (scriptGlobal) { - result = scriptGlobal->GetContext(getter_AddRefs(scriptContext)); - } - - if (!scriptContext) { - scriptContext = NS_STATIC_CAST(nsIScriptContext*, JS_GetContextPrivate(aContext)); - } - + nsLayoutUtils::GetStaticScriptContext(aContext, aObj, + getter_AddRefs(scriptContext)); if (scriptContext) { JSObject* obj; result = owner->GetScriptObject(scriptContext, (void**)&obj); if (NS_SUCCEEDED(result) && obj) { - JSObject* myObj; - result = GetScriptObject(scriptContext, (void**)&myObj); - if (NS_SUCCEEDED(result) && myObj) { - ret = ::JS_DefineProperty(aContext, myObj, - str, OBJECT_TO_JSVAL(obj), - nsnull, nsnull, 0); - } + ret = ::JS_DefineProperty(aContext, aObj, + str, OBJECT_TO_JSVAL(obj), + nsnull, nsnull, 0); } } } } - if (NS_FAILED(result)) { ret = PR_FALSE; } diff --git a/mozilla/content/html/document/src/nsHTMLDocument.h b/mozilla/content/html/document/src/nsHTMLDocument.h index 5ca31f89808..6c85a73d2ea 100644 --- a/mozilla/content/html/document/src/nsHTMLDocument.h +++ b/mozilla/content/html/document/src/nsHTMLDocument.h @@ -126,7 +126,7 @@ public: NS_IMETHOD GetScriptObject(nsIScriptContext *aContext, void** aScriptObject); // From nsJSScriptObject interface, implemented by nsDocument - virtual PRBool Resolve(JSContext *aContext, jsval aID); + virtual PRBool Resolve(JSContext *aContext, JSObject *aObj, jsval aID); /** * Finds text in content diff --git a/mozilla/content/xml/content/src/nsXMLElement.h b/mozilla/content/xml/content/src/nsXMLElement.h index bbe0e562823..f8ffe196bf1 100644 --- a/mozilla/content/xml/content/src/nsXMLElement.h +++ b/mozilla/content/xml/content/src/nsXMLElement.h @@ -200,29 +200,29 @@ public: NS_IMPL_IDOMEVENTRECEIVER_USING_GENERIC(mInner) // nsIJSScriptObject - virtual PRBool AddProperty(JSContext *aContext, jsval aID, jsval *aVp) { - return mInner.AddProperty(aContext, aID, aVp); + virtual PRBool AddProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { + return mInner.AddProperty(aContext, aObj, aID, aVp); } - virtual PRBool DeleteProperty(JSContext *aContext, jsval aID, jsval *aVp) { - return mInner.DeleteProperty(aContext, aID, aVp); + virtual PRBool DeleteProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { + return mInner.DeleteProperty(aContext, aObj, aID, aVp); } - virtual PRBool GetProperty(JSContext *aContext, jsval aID, jsval *aVp) { - return mInner.GetProperty(aContext, aID, aVp); + virtual PRBool GetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { + return mInner.GetProperty(aContext, aObj, aID, aVp); } - virtual PRBool SetProperty(JSContext *aContext, jsval aID, jsval *aVp) { - return mInner.SetProperty(aContext, aID, aVp); + virtual PRBool SetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { + return mInner.SetProperty(aContext, aObj, aID, aVp); } - virtual PRBool EnumerateProperty(JSContext *aContext) { - return mInner.EnumerateProperty(aContext); + virtual PRBool EnumerateProperty(JSContext *aContext, JSObject *aObj) { + return mInner.EnumerateProperty(aContext, aObj); } - virtual PRBool Resolve(JSContext *aContext, jsval aID) { - return mInner.Resolve(aContext, aID); + virtual PRBool Resolve(JSContext *aContext, JSObject *aObj, jsval aID) { + return mInner.Resolve(aContext, aObj, aID); } - virtual PRBool Convert(JSContext *aContext, jsval aID) { - return mInner.Convert(aContext, aID); + virtual PRBool Convert(JSContext *aContext, JSObject *aObj, jsval aID) { + return mInner.Convert(aContext, aObj, aID); } - virtual void Finalize(JSContext *aContext) { - mInner.Finalize(aContext); + virtual void Finalize(JSContext *aContext, JSObject *aObj) { + mInner.Finalize(aContext, aObj); } protected: diff --git a/mozilla/content/xul/content/src/nsXULElement.cpp b/mozilla/content/xul/content/src/nsXULElement.cpp index 7ca551e32c8..8698410df2d 100644 --- a/mozilla/content/xul/content/src/nsXULElement.cpp +++ b/mozilla/content/xul/content/src/nsXULElement.cpp @@ -1589,34 +1589,34 @@ nsXULElement::SetCompiledEventHandler(nsIAtom *aName, void* aHandler) // nsIJSScriptObject interface PRBool -nsXULElement::AddProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsXULElement::AddProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { NS_NOTYETIMPLEMENTED("write me"); return PR_FALSE; } PRBool -nsXULElement::DeleteProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsXULElement::DeleteProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { NS_NOTYETIMPLEMENTED("write me"); return PR_FALSE; } PRBool -nsXULElement::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsXULElement::GetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { return PR_TRUE; } PRBool -nsXULElement::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsXULElement::SetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { NS_NOTYETIMPLEMENTED("write me"); return PR_FALSE; } PRBool -nsXULElement::EnumerateProperty(JSContext *aContext) +nsXULElement::EnumerateProperty(JSContext *aContext, JSObject *aObj) { NS_NOTYETIMPLEMENTED("write me"); return PR_FALSE; @@ -1624,14 +1624,14 @@ nsXULElement::EnumerateProperty(JSContext *aContext) PRBool -nsXULElement::Resolve(JSContext *aContext, jsval aID) +nsXULElement::Resolve(JSContext *aContext, JSObject *aObj, jsval aID) { return PR_TRUE; } PRBool -nsXULElement::Convert(JSContext *aContext, jsval aID) +nsXULElement::Convert(JSContext *aContext, JSObject *aObj, jsval aID) { NS_NOTYETIMPLEMENTED("write me"); return PR_FALSE; @@ -1639,7 +1639,7 @@ nsXULElement::Convert(JSContext *aContext, jsval aID) void -nsXULElement::Finalize(JSContext *aContext) +nsXULElement::Finalize(JSContext *aContext, JSObject *aObj) { NS_NOTYETIMPLEMENTED("write me"); } diff --git a/mozilla/content/xul/content/src/nsXULElement.h b/mozilla/content/xul/content/src/nsXULElement.h index 91d47f10d6b..d69ba52066a 100644 --- a/mozilla/content/xul/content/src/nsXULElement.h +++ b/mozilla/content/xul/content/src/nsXULElement.h @@ -458,14 +458,18 @@ public: NS_IMETHOD SetCompiledEventHandler(nsIAtom *aName, void* aHandler); // 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); + virtual PRBool AddProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + virtual PRBool DeleteProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + virtual PRBool GetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + virtual PRBool SetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + virtual PRBool EnumerateProperty(JSContext *aContext, JSObject *aObj); + virtual PRBool Resolve(JSContext *aContext, JSObject *aObj, jsval aID); + virtual PRBool Convert(JSContext *aContext, JSObject *aObj, jsval aID); + virtual void Finalize(JSContext *aContext, JSObject *aObj); // nsIStyleRule interface. The node implements this to deal with attributes that // need to be mapped into style contexts (e.g., width in treecols). diff --git a/mozilla/content/xul/document/src/nsXULDocument.cpp b/mozilla/content/xul/document/src/nsXULDocument.cpp index 3c04c27fae9..1c3f20fcaf3 100644 --- a/mozilla/content/xul/document/src/nsXULDocument.cpp +++ b/mozilla/content/xul/document/src/nsXULDocument.cpp @@ -3008,7 +3008,7 @@ nsXULDocument::CloneNode(PRBool aDeep, nsIDOMNode** aReturn) // PRBool -nsXULDocument::AddProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsXULDocument::AddProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { NS_NOTYETIMPLEMENTED("write me"); return PR_TRUE; @@ -3016,7 +3016,7 @@ nsXULDocument::AddProperty(JSContext *aContext, jsval aID, jsval *aVp) PRBool -nsXULDocument::DeleteProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsXULDocument::DeleteProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { NS_NOTYETIMPLEMENTED("write me"); return PR_TRUE; @@ -3024,7 +3024,7 @@ nsXULDocument::DeleteProperty(JSContext *aContext, jsval aID, jsval *aVp) PRBool -nsXULDocument::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsXULDocument::GetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { if (JSVAL_IS_STRING(aID)) { JSString *jsString = JS_ValueToString(aContext, aID); @@ -3034,7 +3034,7 @@ nsXULDocument::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) if (PL_strcmp("location", JS_GetStringBytes(jsString)) == 0) { nsCOMPtr window = do_QueryInterface(mScriptGlobalObject); if (nsnull != window) { - return window->GetProperty(aContext, aID, aVp); + return window->GetProperty(aContext, aObj, aID, aVp); } } } @@ -3044,7 +3044,7 @@ nsXULDocument::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) PRBool -nsXULDocument::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsXULDocument::SetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { nsresult rv; @@ -3084,7 +3084,7 @@ nsXULDocument::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) PRBool -nsXULDocument::EnumerateProperty(JSContext *aContext) +nsXULDocument::EnumerateProperty(JSContext *aContext, JSObject *aObj) { NS_NOTYETIMPLEMENTED("write me"); return PR_TRUE; @@ -3092,14 +3092,14 @@ nsXULDocument::EnumerateProperty(JSContext *aContext) PRBool -nsXULDocument::Resolve(JSContext *aContext, jsval aID) +nsXULDocument::Resolve(JSContext *aContext, JSObject *aObj, jsval aID) { return PR_TRUE; } PRBool -nsXULDocument::Convert(JSContext *aContext, jsval aID) +nsXULDocument::Convert(JSContext *aContext, JSObject *aObj, jsval aID) { NS_NOTYETIMPLEMENTED("write me"); return PR_TRUE; @@ -3107,7 +3107,7 @@ nsXULDocument::Convert(JSContext *aContext, jsval aID) void -nsXULDocument::Finalize(JSContext *aContext) +nsXULDocument::Finalize(JSContext *aContext, JSObject *aObj) { NS_NOTYETIMPLEMENTED("write me"); } diff --git a/mozilla/content/xul/document/src/nsXULDocument.h b/mozilla/content/xul/document/src/nsXULDocument.h index 2e52e627cf8..5140359689d 100644 --- a/mozilla/content/xul/document/src/nsXULDocument.h +++ b/mozilla/content/xul/document/src/nsXULDocument.h @@ -358,14 +358,18 @@ public: NS_IMETHOD CloneNode(PRBool aDeep, nsIDOMNode** aReturn); // 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); + virtual PRBool AddProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + virtual PRBool DeleteProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + virtual PRBool GetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + virtual PRBool SetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + virtual PRBool EnumerateProperty(JSContext *aContext, JSObject *aObj); + virtual PRBool Resolve(JSContext *aContext, JSObject *aObj, jsval aID); + virtual PRBool Convert(JSContext *aContext, JSObject *aObj, jsval aID); + virtual void Finalize(JSContext *aContext, JSObject *aObj); // nsIScriptObjectOwner interface NS_IMETHOD GetScriptObject(nsIScriptContext *aContext, void** aScriptObject); diff --git a/mozilla/content/xul/templates/src/nsXULTemplateBuilder.cpp b/mozilla/content/xul/templates/src/nsXULTemplateBuilder.cpp index 5ebfa19e3cf..59af700b741 100644 --- a/mozilla/content/xul/templates/src/nsXULTemplateBuilder.cpp +++ b/mozilla/content/xul/templates/src/nsXULTemplateBuilder.cpp @@ -2988,6 +2988,7 @@ RDFGenericBuilderImpl::AddDatabasePropertyToHTMLElement(nsIContent* aElement, ns nsCOMPtr wrapper; rv = xpc->WrapNative(jscontext, + jselement, aDataBase, NS_GET_IID(nsIRDFCompositeDataSource), getter_AddRefs(wrapper)); diff --git a/mozilla/dom/public/idl/coreDom/makefile.win b/mozilla/dom/public/idl/coreDom/makefile.win index b3a79a04ac6..196cc32654a 100644 --- a/mozilla/dom/public/idl/coreDom/makefile.win +++ b/mozilla/dom/public/idl/coreDom/makefile.win @@ -42,8 +42,8 @@ IDLSRCS = \ Notation.idl \ ProcessingInstruction.idl \ Text.idl \ - StyleSheet.idl \ - StyleSheetCollection.idl + StyleSheet.idl \ + StyleSheetCollection.idl XPCOM_DESTDIR=$(DEPTH)\dom\public\coreDom diff --git a/mozilla/dom/public/nsIJSNativeInitializer.h b/mozilla/dom/public/nsIJSNativeInitializer.h index e4e0bf35d7a..378fee8391a 100644 --- a/mozilla/dom/public/nsIJSNativeInitializer.h +++ b/mozilla/dom/public/nsIJSNativeInitializer.h @@ -39,13 +39,14 @@ class nsIJSNativeInitializer : public nsISupports { public: - static const nsIID& GetIID() { static nsIID iid = NS_IJSNATIVEINITIALIZER_IID; return iid; } + NS_DEFINE_STATIC_IID_ACCESSOR(NS_IJSNATIVEINITIALIZER_IID) /** * Intialize a newly created native instance using the parameters * passed into the JavaScript constructor. */ - NS_IMETHOD Initialize(JSContext* cx, PRUint32 argc, jsval *argv) = 0; + NS_IMETHOD Initialize(JSContext *cx, JSObject *obj, + PRUint32 argc, jsval *argv) = 0; }; diff --git a/mozilla/dom/public/nsIJSScriptObject.h b/mozilla/dom/public/nsIJSScriptObject.h index 79daef97e4a..a6c17a4b2d9 100644 --- a/mozilla/dom/public/nsIJSScriptObject.h +++ b/mozilla/dom/public/nsIJSScriptObject.h @@ -42,18 +42,18 @@ class nsIJSScriptObject : public nsISupports { public: static const nsIID& GetIID() { static nsIID iid = NS_IJSSCRIPTOBJECT_IID; return iid; } - virtual PRBool AddProperty(JSContext *aContext, jsval aID, + virtual PRBool AddProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) = 0; - virtual PRBool DeleteProperty(JSContext *aContext, jsval aID, - jsval *aVp) = 0; - virtual PRBool GetProperty(JSContext *aContext, jsval aID, + virtual PRBool DeleteProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp) = 0; + virtual PRBool GetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) = 0; - virtual PRBool SetProperty(JSContext *aContext, jsval aID, + virtual PRBool SetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) = 0; - virtual PRBool EnumerateProperty(JSContext *aContext) = 0; - virtual PRBool Resolve(JSContext *aContext, jsval aID) = 0; - virtual PRBool Convert(JSContext *aContext, jsval aID) = 0; - virtual void Finalize(JSContext *aContext) = 0; + virtual PRBool EnumerateProperty(JSContext *aContext, JSObject *aObj) = 0; + virtual PRBool Resolve(JSContext *aContext, JSObject *aObj, jsval aID) = 0; + virtual PRBool Convert(JSContext *aContext, JSObject *aObj, jsval aID) = 0; + virtual void Finalize(JSContext *aContext, JSObject *aObj) = 0; }; #endif // nsIJSScriptObject_h__ diff --git a/mozilla/dom/src/base/nsGlobalWindow.cpp b/mozilla/dom/src/base/nsGlobalWindow.cpp index fe8b0f60c17..75e7c385790 100644 --- a/mozilla/dom/src/base/nsGlobalWindow.cpp +++ b/mozilla/dom/src/base/nsGlobalWindow.cpp @@ -1384,14 +1384,14 @@ NS_IMETHODIMP GlobalWindowImpl::Close(JSContext* cx, jsval* argv, PRUint32 argc) { nsresult result = NS_OK; - nsIScriptContext* callingContext = (nsIScriptContext*)JS_GetContextPrivate(cx); - nsIScriptContext* winContext; + nsCOMPtr callingContext; + nsCOMPtr winContext; nsCOMPtr globalObject(do_GetInterface(mWebShell)); - if (globalObject) { - + nsJSUtils::nsGetDynamicScriptContext(cx, getter_AddRefs(callingContext)); + if (globalObject && callingContext) { if (NS_SUCCEEDED(result)) { - result = globalObject->GetContext(&winContext); + result = globalObject->GetContext(getter_AddRefs(winContext)); if (NS_SUCCEEDED(result)) { if (winContext == callingContext) { result = callingContext->SetTerminationFunction(CloseWindow, (nsISupports*)(nsIScriptGlobalObject*)this); @@ -1399,11 +1399,9 @@ GlobalWindowImpl::Close(JSContext* cx, jsval* argv, PRUint32 argc) else { result = Close(); } - NS_RELEASE(winContext); } } } - return result; } @@ -2306,12 +2304,15 @@ GlobalWindowImpl::OpenInternal(JSContext *cx, AttachArguments(*aReturn, argv+3, argc-3); // Get security manager, check to see if URI is allowed. - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); nsCOMPtr newUrl; nsCOMPtr secMan; - if (NS_FAILED(scriptCX->GetSecurityManager(getter_AddRefs(secMan))) || + nsCOMPtr scriptCX; + nsJSUtils::nsGetStaticScriptContext(cx, (JSObject*) mScriptObject, + getter_AddRefs(scriptCX)); + if (!scriptCX || + NS_FAILED(scriptCX->GetSecurityManager(getter_AddRefs(secMan))) || NS_FAILED(NS_NewURI(getter_AddRefs(newUrl), mAbsURL)) || - NS_FAILED(secMan->CheckLoadURIFromScript(scriptCX, newUrl))) + NS_FAILED(secMan->CheckLoadURIFromScript(cx, newUrl))) { NS_RELEASE(newOuterShell); NS_RELEASE(webShellContainer); @@ -2722,8 +2723,10 @@ GlobalWindowImpl::CheckForEventListener(JSContext *aContext, nsString& aPropName 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, atom, kIDOMMouseListenerIID)) { + nsCOMPtr scriptCX; + nsJSUtils::nsGetDynamicScriptContext(aContext, getter_AddRefs(scriptCX)); + if (!scriptCX || + NS_OK != mManager->RegisterScriptEventListener(scriptCX, this, atom, kIDOMMouseListenerIID)) { NS_RELEASE(mManager); return PR_FALSE; } @@ -2731,8 +2734,10 @@ GlobalWindowImpl::CheckForEventListener(JSContext *aContext, nsString& aPropName } 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, atom, kIDOMKeyListenerIID)) { + nsCOMPtr scriptCX; + nsJSUtils::nsGetDynamicScriptContext(aContext, getter_AddRefs(scriptCX)); + if (!scriptCX || + NS_OK != mManager->RegisterScriptEventListener(scriptCX, this, atom, kIDOMKeyListenerIID)) { NS_RELEASE(mManager); return PR_FALSE; } @@ -2740,8 +2745,10 @@ GlobalWindowImpl::CheckForEventListener(JSContext *aContext, nsString& aPropName } else if (aPropName == "onmousemove") { if (NS_OK == GetListenerManager(&mManager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMMouseMotionListenerIID)) { + nsCOMPtr scriptCX; + nsJSUtils::nsGetDynamicScriptContext(aContext, getter_AddRefs(scriptCX)); + if (!scriptCX || + NS_OK != mManager->RegisterScriptEventListener(scriptCX, this, atom, kIDOMMouseMotionListenerIID)) { NS_RELEASE(mManager); return PR_FALSE; } @@ -2749,8 +2756,10 @@ GlobalWindowImpl::CheckForEventListener(JSContext *aContext, nsString& aPropName } else if (aPropName == "onfocus" || aPropName == "onblur") { if (NS_OK == GetListenerManager(&mManager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMFocusListenerIID)) { + nsCOMPtr scriptCX; + nsJSUtils::nsGetDynamicScriptContext(aContext, getter_AddRefs(scriptCX)); + if (!scriptCX || + NS_OK != mManager->RegisterScriptEventListener(scriptCX, this, atom, kIDOMFocusListenerIID)) { NS_RELEASE(mManager); return PR_FALSE; } @@ -2759,8 +2768,10 @@ GlobalWindowImpl::CheckForEventListener(JSContext *aContext, nsString& aPropName else if (aPropName == "onsubmit" || aPropName == "onreset" || aPropName == "onchange" || aPropName == "onselect") { if (NS_OK == GetListenerManager(&mManager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMFormListenerIID)) { + nsCOMPtr scriptCX; + nsJSUtils::nsGetDynamicScriptContext(aContext, getter_AddRefs(scriptCX)); + if (!scriptCX || + NS_OK != mManager->RegisterScriptEventListener(scriptCX, this, atom, kIDOMFormListenerIID)) { NS_RELEASE(mManager); return PR_FALSE; } @@ -2769,8 +2780,10 @@ GlobalWindowImpl::CheckForEventListener(JSContext *aContext, nsString& aPropName else if (aPropName == "onload" || aPropName == "onunload" || aPropName == "onclose" || aPropName == "onabort" || aPropName == "onerror") { if (NS_OK == GetListenerManager(&mManager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMLoadListenerIID)) { + nsCOMPtr scriptCX; + nsJSUtils::nsGetDynamicScriptContext(aContext, getter_AddRefs(scriptCX)); + if (!scriptCX || + NS_OK != mManager->RegisterScriptEventListener(scriptCX, this, atom, kIDOMLoadListenerIID)) { NS_RELEASE(mManager); return PR_FALSE; } @@ -2778,9 +2791,10 @@ GlobalWindowImpl::CheckForEventListener(JSContext *aContext, nsString& aPropName } else if (aPropName == "onpaint") { if (NS_OK == GetListenerManager(&mManager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *) - JS_GetContextPrivate(aContext); - if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, + nsCOMPtr scriptCX; + nsJSUtils::nsGetDynamicScriptContext(aContext, getter_AddRefs(scriptCX)); + if (!scriptCX || + NS_OK != mManager->RegisterScriptEventListener(scriptCX, this, atom, kIDOMPaintListenerIID)) { NS_RELEASE(mManager); return PR_FALSE; @@ -2793,7 +2807,7 @@ GlobalWindowImpl::CheckForEventListener(JSContext *aContext, nsString& aPropName } PRBool -GlobalWindowImpl::AddProperty(JSContext *aContext, jsval aID, jsval *aVp) +GlobalWindowImpl::AddProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { if (JS_TypeOfValue(aContext, *aVp) == JSTYPE_FUNCTION && JSVAL_IS_STRING(aID)) { nsString mPropName; @@ -2808,13 +2822,13 @@ GlobalWindowImpl::AddProperty(JSContext *aContext, jsval aID, jsval *aVp) } PRBool -GlobalWindowImpl::DeleteProperty(JSContext *aContext, jsval aID, jsval *aVp) +GlobalWindowImpl::DeleteProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { return PR_TRUE; } PRBool -GlobalWindowImpl::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) +GlobalWindowImpl::GetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { if (JSVAL_IS_STRING(aID)) { char* cString = JS_GetStringBytes(JS_ValueToString(aContext, aID)); @@ -2826,8 +2840,10 @@ GlobalWindowImpl::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) nsIScriptObjectOwner *owner = nsnull; if (NS_OK == location->QueryInterface(NS_GET_IID(nsIScriptObjectOwner), (void**)&owner)) { JSObject *object = nsnull; - nsIScriptContext *script_cx = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK == owner->GetScriptObject(script_cx, (void**)&object)) { + nsCOMPtr scriptCX; + nsJSUtils::nsGetDynamicScriptContext(aContext, getter_AddRefs(scriptCX)); + if (scriptCX && + NS_OK == owner->GetScriptObject(scriptCX, (void**)&object)) { // set the return value *aVp = OBJECT_TO_JSVAL(object); } @@ -2870,7 +2886,7 @@ GlobalWindowImpl::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) } PRBool -GlobalWindowImpl::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) +GlobalWindowImpl::SetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { PRBool result = PR_TRUE; if (JS_TypeOfValue(aContext, *aVp) == JSTYPE_FUNCTION && JSVAL_IS_STRING(aID)) { @@ -2893,7 +2909,7 @@ GlobalWindowImpl::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) JSString* str = JS_NewStringCopyZ(aContext, "href"); if (scriptObj && str) { - result = scriptObj->SetProperty(aContext, STRING_TO_JSVAL(str), aVp); + result = scriptObj->SetProperty(aContext, aObj, STRING_TO_JSVAL(str), aVp); } } else { @@ -2928,13 +2944,13 @@ GlobalWindowImpl::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) } PRBool -GlobalWindowImpl::EnumerateProperty(JSContext *aContext) +GlobalWindowImpl::EnumerateProperty(JSContext *aContext, JSObject *aObj) { return PR_TRUE; } PRBool -GlobalWindowImpl::Resolve(JSContext *aContext, jsval aID) +GlobalWindowImpl::Resolve(JSContext *aContext, JSObject *aObj, jsval aID) { if (JSVAL_IS_STRING(aID)) { if (PL_strcmp("location", JS_GetStringBytes(JS_ValueToString(aContext, aID))) == 0) { @@ -2980,13 +2996,13 @@ GlobalWindowImpl::Resolve(JSContext *aContext, jsval aID) } PRBool -GlobalWindowImpl::Convert(JSContext *aContext, jsval aID) +GlobalWindowImpl::Convert(JSContext *aContext, JSObject *aObj, jsval aID) { return PR_TRUE; } void -GlobalWindowImpl::Finalize(JSContext *aContext) +GlobalWindowImpl::Finalize(JSContext *aContext, JSObject *aObj) { } @@ -3438,19 +3454,19 @@ NavigatorImpl::Preference(JSContext* cx, *aReturn = JSVAL_NULL; - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - JSObject* self; - result = scriptCX->GetSecurityManager(getter_AddRefs(secMan)); + JSObject* self = (JSObject*)mScriptObject; + if (!self) { + return NS_ERROR_FAILURE; + } + + PRBool ok; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &result); if (NS_FAILED(result)) { return result; } - result = GetScriptObject(scriptCX, (void**)&self); - if (NS_FAILED(result)) { - return result; - } - PRBool ok; - secMan->CheckScriptAccess(scriptCX, self, NS_DOM_PROP_NAVIGATOR_PREFERENCE, + + secMan->CheckScriptAccess(cx, self, NS_DOM_PROP_NAVIGATOR_PREFERENCE, (argc == 1 ? PR_FALSE : PR_TRUE), &ok); if (!ok) { //Need to throw error here diff --git a/mozilla/dom/src/base/nsGlobalWindow.h b/mozilla/dom/src/base/nsGlobalWindow.h index aadd86ed90f..4e47cd96c9b 100644 --- a/mozilla/dom/src/base/nsGlobalWindow.h +++ b/mozilla/dom/src/base/nsGlobalWindow.h @@ -219,14 +219,18 @@ public: 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); + virtual PRBool AddProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + virtual PRBool DeleteProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + virtual PRBool GetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + virtual PRBool SetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + virtual PRBool EnumerateProperty(JSContext *aContext, JSObject *aObj); + virtual PRBool Resolve(JSContext *aContext, JSObject *aObj, jsval aID); + virtual PRBool Convert(JSContext *aContext, JSObject *aObj, jsval aID); + virtual void Finalize(JSContext *aContext, JSObject *aObj); // nsIScriptGlobalObjectData interface NS_IMETHOD GetPrincipal(nsIPrincipal **prin); @@ -413,14 +417,14 @@ public: 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); + virtual PRBool AddProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp); + virtual PRBool DeleteProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp); + virtual PRBool GetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp); + virtual PRBool SetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp); + virtual PRBool EnumerateProperty(JSContext *aContext, JSObject *aObj); + virtual PRBool Resolve(JSContext *aContext, JSObject *aObj, jsval aID); + virtual PRBool Convert(JSContext *aContext, JSObject *aObj, jsval aID); + virtual void Finalize(JSContext *aContext, JSObject *aObj); protected: nsresult SetURL(nsIURI* aURL); diff --git a/mozilla/dom/src/base/nsJSBarProp.cpp b/mozilla/dom/src/base/nsJSBarProp.cpp index 8622156a58a..9af27f45a4a 100644 --- a/mozilla/dom/src/base/nsJSBarProp.cpp +++ b/mozilla/dom/src/base/nsJSBarProp.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMBarProp.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIBarPropIID, NS_IDOMBARPROP_IID); -NS_DEF_PTR(nsIDOMBarProp); - // // BarProp property ids // @@ -66,18 +64,19 @@ GetBarPropProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case BARPROP_VISIBLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_BARPROP_VISIBLE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_BARPROP_VISIBLE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -86,16 +85,16 @@ GetBarPropProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -116,22 +115,23 @@ SetBarPropProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case BARPROP_VISIBLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_BARPROP_VISIBLE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_BARPROP_VISIBLE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetVisible(prop); @@ -139,11 +139,11 @@ SetBarPropProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/base/nsJSDOMException.cpp b/mozilla/dom/src/base/nsJSDOMException.cpp index 975f68f5682..639bb2d4bf3 100644 --- a/mozilla/dom/src/base/nsJSDOMException.cpp +++ b/mozilla/dom/src/base/nsJSDOMException.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMDOMException.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIDOMExceptionIID, NS_IDOMDOMEXCEPTION_IID); -NS_DEF_PTR(nsIDOMDOMException); - // // DOMException property ids // @@ -69,18 +67,19 @@ GetDOMExceptionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case DOMEXCEPTION_CODE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_DOMEXCEPTION_CODE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_DOMEXCEPTION_CODE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRUint32 prop; nsresult result = NS_OK; @@ -89,16 +88,16 @@ GetDOMExceptionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case DOMEXCEPTION_RESULT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_DOMEXCEPTION_RESULT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_DOMEXCEPTION_RESULT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRUint32 prop; nsresult result = NS_OK; @@ -107,16 +106,16 @@ GetDOMExceptionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case DOMEXCEPTION_MESSAGE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_DOMEXCEPTION_MESSAGE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_DOMEXCEPTION_MESSAGE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -125,16 +124,16 @@ GetDOMExceptionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case DOMEXCEPTION_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_DOMEXCEPTION_NAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_DOMEXCEPTION_NAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -143,16 +142,16 @@ GetDOMExceptionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -173,19 +172,20 @@ SetDOMExceptionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -231,22 +231,6 @@ DOMExceptionToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsva nsIDOMDOMException *nativeThis = (nsIDOMDOMException*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsAutoString nativeRet; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_DOMEXCEPTION_TOSTRING, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -254,9 +238,26 @@ DOMExceptionToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsva { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_DOMEXCEPTION_TOSTRING, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->ToString(nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } nsJSUtils::nsConvertStringToJSVal(nativeRet, cx, rval); diff --git a/mozilla/dom/src/base/nsJSEnvironment.cpp b/mozilla/dom/src/base/nsJSEnvironment.cpp index 90d52fa7e3a..c973c29c498 100644 --- a/mozilla/dom/src/base/nsJSEnvironment.cpp +++ b/mozilla/dom/src/base/nsJSEnvironment.cpp @@ -48,6 +48,7 @@ #include "nsIJSRuntimeService.h" #include "nsIPref.h" #include "nsCOMPtr.h" +#include "nsJSUtils.h" // Force PR_LOGGING so we can get JS strict warnings even in release builds #define FORCE_PR_LOG 1 @@ -70,33 +71,38 @@ NS_ScriptErrorReporter(JSContext *cx, const char *message, JSErrorReport *report) { - nsIScriptContext* context = (nsIScriptContext*)JS_GetContextPrivate(cx); - nsCOMPtr globalObject(context->GetGlobalObject()); + nsCOMPtr context; - if (globalObject) { - nsCOMPtr owner; - if(NS_FAILED(globalObject->GetGlobalObjectOwner(getter_AddRefs(owner))) || - !owner) { - NS_WARN_IF_FALSE(PR_FALSE, "Failed to get a global Object Owner"); - return; - } - - const char* error; - if (message) { - error = message; - } - else { - error = ""; - } + // XXX this means we are not going to get error reports on non DOM contexts + nsJSUtils::nsGetDynamicScriptContext(cx, getter_AddRefs(context)); + if (context) { + nsCOMPtr globalObject(context->GetGlobalObject()); - if(report) { - owner->ReportScriptError(error, - report->filename, - report->lineno, - report->linebuf); - } - else { - owner->ReportScriptError(error, nsnull, 0, nsnull); + if (globalObject) { + nsCOMPtr owner; + if(NS_FAILED(globalObject->GetGlobalObjectOwner(getter_AddRefs(owner))) || + !owner) { + NS_WARN_IF_FALSE(PR_FALSE, "Failed to get a global Object Owner"); + return; + } + + const char* error; + if (message) { + error = message; + } + else { + error = ""; + } + + if(report) { + owner->ReportScriptError(error, + report->filename, + report->lineno, + report->linebuf); + } + else { + owner->ReportScriptError(error, nsnull, 0, nsnull); + } } } @@ -119,6 +125,7 @@ NS_ScriptErrorReporter(JSContext *cx, } #endif + // XXX do we really want to be doing this? JS_ClearPendingException(cx); } @@ -131,7 +138,7 @@ nsJSContext::nsJSContext(JSRuntime *aRuntime) // Check for the JS strict option, which enables extra error checks nsresult rv; - PRBool strict, werror; + PRBool strict; NS_WITH_SERVICE(nsIPref, prefs, kPrefServiceCID, &rv); if (NS_SUCCEEDED(rv)) { uint32 options = 0; @@ -143,6 +150,7 @@ nsJSContext::nsJSContext(JSRuntime *aRuntime) } #endif #ifdef JSOPTION_WERROR + PRBool werror; if (NS_SUCCEEDED(prefs->GetBoolPref("javascript.options.werror", &werror)) && werror) { @@ -174,15 +182,15 @@ nsJSContext::~nsJSContext() if (!mContext) return; - // Tell xpconnect that we're about to destroy the JSContext so it can cleanup - nsresult rv; - NS_WITH_SERVICE(nsIXPConnect, xpc, nsIXPConnect::GetCID(), &rv); - if (NS_SUCCEEDED(rv)) - xpc->AbandonJSContext(mContext); - /* Remove global object reference to window object, so it can be collected. */ JS_SetGlobalObject(mContext, nsnull); JS_DestroyContext(mContext); + + // Let xpconnect resync its JSContext tracker (this is optional) + nsresult rv; + NS_WITH_SERVICE(nsIXPConnect, xpc, nsIXPConnect::GetCID(), &rv); + if (NS_SUCCEEDED(rv)) + xpc->SyncJSContexts(); } NS_IMPL_ISUPPORTS(nsJSContext, NS_GET_IID(nsIScriptContext)); @@ -636,6 +644,7 @@ nsJSContext::InitContext(nsIScriptGlobalObject *aGlobalObject) JS_SetGlobalObject(mContext, global); rv = InitClasses(); // this will complete the global object initialization } + // XXX there ought to be an else here! if (NS_SUCCEEDED(rv)) { ::JS_SetErrorReporter(mContext, NS_ScriptErrorReporter); @@ -698,17 +707,13 @@ nsJSContext::InitClasses() rv = NS_OK; } - // Hook up XPConnect - { + // Initialize XPConnect classes + if (NS_SUCCEEDED(rv)) { NS_WITH_SERVICE(nsIXPConnect, xpc, nsIXPConnect::GetCID(), &rv); if (NS_SUCCEEDED(rv)) { - rv = xpc->AddNewComponentsObject(mContext, JS_GetGlobalObject(mContext)); - NS_ASSERTION(NS_SUCCEEDED(rv), "unable to add Components object"); - } - else { - // silently fail for now - rv = NS_OK; + rv = xpc->InitClasses(mContext, JS_GetGlobalObject(mContext)); } + NS_ASSERTION(NS_SUCCEEDED(rv), "unable to init xpconnect classes"); } mIsInitialized = PR_TRUE; return rv; @@ -908,31 +913,17 @@ extern "C" NS_DOM nsresult NS_CreateScriptContext(nsIScriptGlobalObject *aGlobal return NS_ERROR_OUT_OF_MEMORY; *aContext = scriptContext; - // Hook up XPConnect + // Hook up Security Manager to XPConnect nsresult rv; NS_WITH_SERVICE(nsIXPConnect, xpc, nsIXPConnect::GetCID(), &rv); if (NS_SUCCEEDED(rv)) { - nsCOMPtr owner = do_QueryInterface(aGlobal, &rv); + JSContext *cx = (JSContext*) scriptContext->GetNativeContext(); + nsCOMPtr mgr; + rv = scriptContext->GetSecurityManager(getter_AddRefs(mgr)); if (NS_SUCCEEDED(rv)) { - JSObject* global; - rv = owner->GetScriptObject(scriptContext, (void**) &global); - if (NS_SUCCEEDED(rv)) { - // Tell XPConnect about this context - JSContext *cx = (JSContext*) scriptContext->GetNativeContext(); - rv = xpc->InitJSContext(cx, global, JS_FALSE); - //NS_ASSERTION(NS_SUCCEEDED(rv), "xpconnect unable to init jscontext"); - - // If that succeeded, get a security manager and install it - if (NS_SUCCEEDED(rv)) { - nsCOMPtr mgr; - rv = scriptContext->GetSecurityManager(getter_AddRefs(mgr)); - if (NS_SUCCEEDED(rv)) { - nsCOMPtr xpcSecurityManager = do_QueryInterface(mgr, &rv); - if (NS_SUCCEEDED(rv)) - xpc->SetSecurityManagerForJSContext(cx, xpcSecurityManager, XPC_HOOK_VALUE); - } - } - } + nsCOMPtr xpcSecurityManager = do_QueryInterface(mgr, &rv); + if (NS_SUCCEEDED(rv)) + xpc->SetSecurityManagerForJSContext(cx, xpcSecurityManager, XPC_HOOK_VALUE); } } @@ -940,7 +931,7 @@ extern "C" NS_DOM nsresult NS_CreateScriptContext(nsIScriptGlobalObject *aGlobal scriptContext->InitContext(aGlobal); aGlobal->SetContext(scriptContext); - // XXX suppress XPConnect failures for now? + // XXX suppress XPConnect Security Manager setup failures for now? return NS_OK; } diff --git a/mozilla/dom/src/base/nsJSHistory.cpp b/mozilla/dom/src/base/nsJSHistory.cpp index 023800859c8..f5484aa4c7b 100644 --- a/mozilla/dom/src/base/nsJSHistory.cpp +++ b/mozilla/dom/src/base/nsJSHistory.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHistory.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHistoryIID, NS_IDOMHISTORY_IID); -NS_DEF_PTR(nsIDOMHistory); - // // History property ids // @@ -69,18 +67,19 @@ GetHistoryProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HISTORY_LENGTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HISTORY_LENGTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HISTORY_LENGTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -89,16 +88,16 @@ GetHistoryProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HISTORY_CURRENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HISTORY_CURRENT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HISTORY_CURRENT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -107,16 +106,16 @@ GetHistoryProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HISTORY_PREVIOUS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HISTORY_PREVIOUS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HISTORY_PREVIOUS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -125,16 +124,16 @@ GetHistoryProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HISTORY_NEXT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HISTORY_NEXT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HISTORY_NEXT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -143,16 +142,16 @@ GetHistoryProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -173,19 +172,20 @@ SetHistoryProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -230,22 +230,6 @@ HistoryBack(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMHistory *nativeThis = (nsIDOMHistory*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HISTORY_BACK, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -253,9 +237,26 @@ HistoryBack(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HISTORY_BACK, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Back(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -273,22 +274,6 @@ HistoryForward(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva { nsIDOMHistory *nativeThis = (nsIDOMHistory*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HISTORY_FORWARD, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -296,9 +281,26 @@ HistoryForward(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HISTORY_FORWARD, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Forward(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -316,22 +318,6 @@ HistoryGo(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMHistory *nativeThis = (nsIDOMHistory*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HISTORY_GO, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -339,9 +325,26 @@ HistoryGo(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HISTORY_GO, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Go(cx, argv+0, argc-0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; diff --git a/mozilla/dom/src/base/nsJSLocation.cpp b/mozilla/dom/src/base/nsJSLocation.cpp index a0a6291280f..6ab5379ddd0 100644 --- a/mozilla/dom/src/base/nsJSLocation.cpp +++ b/mozilla/dom/src/base/nsJSLocation.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMLocation.h" #include "nsIDOMNSLocation.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kILocationIID, NS_IDOMLOCATION_IID); static NS_DEFINE_IID(kINSLocationIID, NS_IDOMNSLOCATION_IID); -NS_DEF_PTR(nsIDOMLocation); -NS_DEF_PTR(nsIDOMNSLocation); - // // Location property ids // @@ -75,18 +72,19 @@ GetLocationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case LOCATION_HASH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_LOCATION_HASH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_LOCATION_HASH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -95,16 +93,16 @@ GetLocationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case LOCATION_HOST: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_LOCATION_HOST, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_LOCATION_HOST, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -113,16 +111,16 @@ GetLocationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case LOCATION_HOSTNAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_LOCATION_HOSTNAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_LOCATION_HOSTNAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -131,16 +129,16 @@ GetLocationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case LOCATION_PATHNAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_LOCATION_PATHNAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_LOCATION_PATHNAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -149,16 +147,16 @@ GetLocationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case LOCATION_PORT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_LOCATION_PORT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_LOCATION_PORT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -167,16 +165,16 @@ GetLocationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case LOCATION_PROTOCOL: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_LOCATION_PROTOCOL, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_LOCATION_PROTOCOL, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -185,16 +183,16 @@ GetLocationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case LOCATION_SEARCH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_LOCATION_SEARCH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_LOCATION_SEARCH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -203,16 +201,16 @@ GetLocationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -233,18 +231,19 @@ SetLocationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case LOCATION_HASH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_LOCATION_HASH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_LOCATION_HASH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -256,9 +255,9 @@ SetLocationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case LOCATION_HOST: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_LOCATION_HOST, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_LOCATION_HOST, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -270,9 +269,9 @@ SetLocationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case LOCATION_HOSTNAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_LOCATION_HOSTNAME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_LOCATION_HOSTNAME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -284,9 +283,9 @@ SetLocationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case LOCATION_PATHNAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_LOCATION_PATHNAME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_LOCATION_PATHNAME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -298,9 +297,9 @@ SetLocationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case LOCATION_PORT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_LOCATION_PORT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_LOCATION_PORT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -312,9 +311,9 @@ SetLocationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case LOCATION_PROTOCOL: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_LOCATION_PROTOCOL, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_LOCATION_PROTOCOL, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -326,9 +325,9 @@ SetLocationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case LOCATION_SEARCH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_LOCATION_SEARCH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_LOCATION_SEARCH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -338,11 +337,11 @@ SetLocationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -388,22 +387,6 @@ LocationToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r nsIDOMLocation *nativeThis = (nsIDOMLocation*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsAutoString nativeRet; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_LOCATION_TOSTRING, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -411,9 +394,26 @@ LocationToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_LOCATION_TOSTRING, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->ToString(nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } nsJSUtils::nsConvertStringToJSVal(nativeRet, cx, rval); @@ -430,38 +430,39 @@ PR_STATIC_CALLBACK(JSBool) NSLocationReload(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMLocation *privateThis = (nsIDOMLocation*)nsJSUtils::nsGetNativeThis(cx, obj); - nsIDOMNSLocationPtr nativeThis = nsnull; + nsCOMPtr nativeThis; nsresult result = NS_OK; - if (NS_OK != privateThis->QueryInterface(kINSLocationIID, (void **)&nativeThis)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); - } - - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSLOCATION_RELOAD, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } + if (NS_OK != privateThis->QueryInterface(kINSLocationIID, getter_AddRefs(nativeThis))) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } // If there's no private data, this must be the prototype, so ignore - if (nsnull == nativeThis) { + if (!nativeThis) { return JS_TRUE; } { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSLOCATION_RELOAD, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Reload(cx, argv+0, argc-0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -478,38 +479,39 @@ PR_STATIC_CALLBACK(JSBool) NSLocationReplace(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMLocation *privateThis = (nsIDOMLocation*)nsJSUtils::nsGetNativeThis(cx, obj); - nsIDOMNSLocationPtr nativeThis = nsnull; + nsCOMPtr nativeThis; nsresult result = NS_OK; - if (NS_OK != privateThis->QueryInterface(kINSLocationIID, (void **)&nativeThis)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); - } - - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSLOCATION_REPLACE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } + if (NS_OK != privateThis->QueryInterface(kINSLocationIID, getter_AddRefs(nativeThis))) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } // If there's no private data, this must be the prototype, so ignore - if (nsnull == nativeThis) { + if (!nativeThis) { return JS_TRUE; } { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSLOCATION_REPLACE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Replace(cx, argv+0, argc-0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; diff --git a/mozilla/dom/src/base/nsJSMimeType.cpp b/mozilla/dom/src/base/nsJSMimeType.cpp index 0eae89f4740..78906ec727a 100644 --- a/mozilla/dom/src/base/nsJSMimeType.cpp +++ b/mozilla/dom/src/base/nsJSMimeType.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMMimeType.h" #include "nsIDOMPlugin.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIMimeTypeIID, NS_IDOMMIMETYPE_IID); static NS_DEFINE_IID(kIPluginIID, NS_IDOMPLUGIN_IID); -NS_DEF_PTR(nsIDOMMimeType); -NS_DEF_PTR(nsIDOMPlugin); - // // MimeType property ids // @@ -72,18 +69,19 @@ GetMimeTypeProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case MIMETYPE_DESCRIPTION: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_MIMETYPE_DESCRIPTION, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_MIMETYPE_DESCRIPTION, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -92,35 +90,35 @@ GetMimeTypeProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case MIMETYPE_ENABLEDPLUGIN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_MIMETYPE_ENABLEDPLUGIN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_MIMETYPE_ENABLEDPLUGIN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMPlugin* prop; nsresult result = NS_OK; result = a->GetEnabledPlugin(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case MIMETYPE_SUFFIXES: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_MIMETYPE_SUFFIXES, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_MIMETYPE_SUFFIXES, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -129,16 +127,16 @@ GetMimeTypeProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case MIMETYPE_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_MIMETYPE_TYPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_MIMETYPE_TYPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -147,16 +145,16 @@ GetMimeTypeProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -177,19 +175,20 @@ SetMimeTypeProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/base/nsJSMimeTypeArray.cpp b/mozilla/dom/src/base/nsJSMimeTypeArray.cpp index 880d2e08a01..1c4825825fd 100644 --- a/mozilla/dom/src/base/nsJSMimeTypeArray.cpp +++ b/mozilla/dom/src/base/nsJSMimeTypeArray.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMMimeType.h" #include "nsIDOMMimeTypeArray.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIMimeTypeIID, NS_IDOMMIMETYPE_IID); static NS_DEFINE_IID(kIMimeTypeArrayIID, NS_IDOMMIMETYPEARRAY_IID); -NS_DEF_PTR(nsIDOMMimeType); -NS_DEF_PTR(nsIDOMMimeTypeArray); - // // MimeTypeArray property ids // @@ -70,19 +67,20 @@ GetMimeTypeArrayProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) PRBool checkNamedItem = PR_TRUE; if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } checkNamedItem = PR_FALSE; switch(JSVAL_TO_INT(id)) { case MIMETYPEARRAY_LENGTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_MIMETYPEARRAY_LENGTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_MIMETYPEARRAY_LENGTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRUint32 prop; nsresult result = NS_OK; @@ -91,7 +89,7 @@ GetMimeTypeArrayProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } @@ -102,10 +100,10 @@ GetMimeTypeArrayProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) result = a->Item(JSVAL_TO_INT(id), &prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } } @@ -128,18 +126,18 @@ GetMimeTypeArrayProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) if (NS_SUCCEEDED(result)) { if (NULL != prop) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -161,20 +159,21 @@ SetMimeTypeArrayProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) PRBool checkNamedItem = PR_TRUE; if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } checkNamedItem = PR_FALSE; switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -221,42 +220,43 @@ MimeTypeArrayItem(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval * nsresult result = NS_OK; nsIDOMMimeType* nativeRet; PRUint32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_MIMETYPEARRAY_ITEM, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_MIMETYPEARRAY_ITEM, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->Item(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -273,40 +273,41 @@ MimeTypeArrayNamedItem(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, js nsresult result = NS_OK; nsIDOMMimeType* nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_MIMETYPEARRAY_NAMEDITEM, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_MIMETYPEARRAY_NAMEDITEM, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->NamedItem(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; diff --git a/mozilla/dom/src/base/nsJSNavigator.cpp b/mozilla/dom/src/base/nsJSNavigator.cpp index 6069c8624a2..43ac1f6cd3b 100644 --- a/mozilla/dom/src/base/nsJSNavigator.cpp +++ b/mozilla/dom/src/base/nsJSNavigator.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMNavigator.h" #include "nsIDOMPluginArray.h" @@ -46,10 +46,6 @@ static NS_DEFINE_IID(kINavigatorIID, NS_IDOMNAVIGATOR_IID); static NS_DEFINE_IID(kIPluginArrayIID, NS_IDOMPLUGINARRAY_IID); static NS_DEFINE_IID(kIMimeTypeArrayIID, NS_IDOMMIMETYPEARRAY_IID); -NS_DEF_PTR(nsIDOMNavigator); -NS_DEF_PTR(nsIDOMPluginArray); -NS_DEF_PTR(nsIDOMMimeTypeArray); - // // Navigator property ids // @@ -80,18 +76,19 @@ GetNavigatorProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case NAVIGATOR_APPCODENAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NAVIGATOR_APPCODENAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NAVIGATOR_APPCODENAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -100,16 +97,16 @@ GetNavigatorProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case NAVIGATOR_APPNAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NAVIGATOR_APPNAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NAVIGATOR_APPNAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -118,16 +115,16 @@ GetNavigatorProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case NAVIGATOR_APPVERSION: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NAVIGATOR_APPVERSION, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NAVIGATOR_APPVERSION, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -136,16 +133,16 @@ GetNavigatorProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case NAVIGATOR_LANGUAGE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NAVIGATOR_LANGUAGE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NAVIGATOR_LANGUAGE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -154,35 +151,35 @@ GetNavigatorProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case NAVIGATOR_MIMETYPES: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NAVIGATOR_MIMETYPES, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NAVIGATOR_MIMETYPES, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMMimeTypeArray* prop; nsresult result = NS_OK; result = a->GetMimeTypes(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case NAVIGATOR_PLATFORM: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NAVIGATOR_PLATFORM, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NAVIGATOR_PLATFORM, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -191,35 +188,35 @@ GetNavigatorProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case NAVIGATOR_PLUGINS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NAVIGATOR_PLUGINS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NAVIGATOR_PLUGINS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMPluginArray* prop; nsresult result = NS_OK; result = a->GetPlugins(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case NAVIGATOR_SECURITYPOLICY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NAVIGATOR_SECURITYPOLICY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NAVIGATOR_SECURITYPOLICY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -228,16 +225,16 @@ GetNavigatorProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case NAVIGATOR_USERAGENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NAVIGATOR_USERAGENT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NAVIGATOR_USERAGENT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -246,16 +243,16 @@ GetNavigatorProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -276,19 +273,20 @@ SetNavigatorProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -334,22 +332,6 @@ NavigatorJavaEnabled(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsva nsIDOMNavigator *nativeThis = (nsIDOMNavigator*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; PRBool nativeRet; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NAVIGATOR_JAVAENABLED, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -357,9 +339,26 @@ NavigatorJavaEnabled(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsva { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NAVIGATOR_JAVAENABLED, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->JavaEnabled(&nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = BOOLEAN_TO_JSVAL(nativeRet); @@ -378,22 +377,6 @@ NavigatorTaintEnabled(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsv nsIDOMNavigator *nativeThis = (nsIDOMNavigator*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; PRBool nativeRet; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NAVIGATOR_TAINTENABLED, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -401,9 +384,26 @@ NavigatorTaintEnabled(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsv { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NAVIGATOR_TAINTENABLED, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->TaintEnabled(&nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = BOOLEAN_TO_JSVAL(nativeRet); @@ -422,22 +422,6 @@ NavigatorPreference(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval nsIDOMNavigator *nativeThis = (nsIDOMNavigator*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; jsval nativeRet; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NAVIGATOR_PREFERENCE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -445,9 +429,26 @@ NavigatorPreference(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NAVIGATOR_PREFERENCE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Preference(cx, argv+0, argc-0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = nativeRet; diff --git a/mozilla/dom/src/base/nsJSPlugin.cpp b/mozilla/dom/src/base/nsJSPlugin.cpp index ac19ecacea1..ce61f8ff9aa 100644 --- a/mozilla/dom/src/base/nsJSPlugin.cpp +++ b/mozilla/dom/src/base/nsJSPlugin.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMMimeType.h" #include "nsIDOMPlugin.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIMimeTypeIID, NS_IDOMMIMETYPE_IID); static NS_DEFINE_IID(kIPluginIID, NS_IDOMPLUGIN_IID); -NS_DEF_PTR(nsIDOMMimeType); -NS_DEF_PTR(nsIDOMPlugin); - // // Plugin property ids // @@ -73,19 +70,20 @@ GetPluginProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) PRBool checkNamedItem = PR_TRUE; if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } checkNamedItem = PR_FALSE; switch(JSVAL_TO_INT(id)) { case PLUGIN_DESCRIPTION: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_PLUGIN_DESCRIPTION, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_PLUGIN_DESCRIPTION, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -94,16 +92,16 @@ GetPluginProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case PLUGIN_FILENAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_PLUGIN_FILENAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_PLUGIN_FILENAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -112,16 +110,16 @@ GetPluginProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case PLUGIN_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_PLUGIN_NAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_PLUGIN_NAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -130,16 +128,16 @@ GetPluginProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case PLUGIN_LENGTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_PLUGIN_LENGTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_PLUGIN_LENGTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRUint32 prop; nsresult result = NS_OK; @@ -148,7 +146,7 @@ GetPluginProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } @@ -159,10 +157,10 @@ GetPluginProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) result = a->Item(JSVAL_TO_INT(id), &prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } } @@ -185,18 +183,18 @@ GetPluginProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) if (NS_SUCCEEDED(result)) { if (NULL != prop) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -218,20 +216,21 @@ SetPluginProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) PRBool checkNamedItem = PR_TRUE; if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } checkNamedItem = PR_FALSE; switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -278,42 +277,43 @@ PluginItem(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) nsresult result = NS_OK; nsIDOMMimeType* nativeRet; PRUint32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_PLUGIN_ITEM, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_PLUGIN_ITEM, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->Item(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -330,40 +330,41 @@ PluginNamedItem(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rv nsresult result = NS_OK; nsIDOMMimeType* nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_PLUGIN_NAMEDITEM, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_PLUGIN_NAMEDITEM, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->NamedItem(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; diff --git a/mozilla/dom/src/base/nsJSPluginArray.cpp b/mozilla/dom/src/base/nsJSPluginArray.cpp index d6d4267f48e..d5cbb3a52cf 100644 --- a/mozilla/dom/src/base/nsJSPluginArray.cpp +++ b/mozilla/dom/src/base/nsJSPluginArray.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMPlugin.h" #include "nsIDOMPluginArray.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIPluginIID, NS_IDOMPLUGIN_IID); static NS_DEFINE_IID(kIPluginArrayIID, NS_IDOMPLUGINARRAY_IID); -NS_DEF_PTR(nsIDOMPlugin); -NS_DEF_PTR(nsIDOMPluginArray); - // // PluginArray property ids // @@ -70,19 +67,20 @@ GetPluginArrayProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) PRBool checkNamedItem = PR_TRUE; if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } checkNamedItem = PR_FALSE; switch(JSVAL_TO_INT(id)) { case PLUGINARRAY_LENGTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_PLUGINARRAY_LENGTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_PLUGINARRAY_LENGTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRUint32 prop; nsresult result = NS_OK; @@ -91,7 +89,7 @@ GetPluginArrayProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } @@ -102,10 +100,10 @@ GetPluginArrayProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) result = a->Item(JSVAL_TO_INT(id), &prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } } @@ -128,18 +126,18 @@ GetPluginArrayProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) if (NS_SUCCEEDED(result)) { if (NULL != prop) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -161,20 +159,21 @@ SetPluginArrayProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) PRBool checkNamedItem = PR_TRUE; if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } checkNamedItem = PR_FALSE; switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -221,42 +220,43 @@ PluginArrayItem(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rv nsresult result = NS_OK; nsIDOMPlugin* nativeRet; PRUint32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_PLUGINARRAY_ITEM, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_PLUGINARRAY_ITEM, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->Item(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -273,40 +273,41 @@ PluginArrayNamedItem(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsva nsresult result = NS_OK; nsIDOMPlugin* nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_PLUGINARRAY_NAMEDITEM, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_PLUGINARRAY_NAMEDITEM, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->NamedItem(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -322,39 +323,40 @@ PluginArrayRefresh(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval nsIDOMPluginArray *nativeThis = (nsIDOMPluginArray*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; PRBool b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_PLUGINARRAY_REFRESH, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_PLUGINARRAY_REFRESH, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!nsJSUtils::nsConvertJSValToBool(&b0, cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } result = nativeThis->Refresh(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; diff --git a/mozilla/dom/src/base/nsJSScreen.cpp b/mozilla/dom/src/base/nsJSScreen.cpp index e023a07c3cf..36f87d47083 100644 --- a/mozilla/dom/src/base/nsJSScreen.cpp +++ b/mozilla/dom/src/base/nsJSScreen.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMScreen.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIScreenIID, NS_IDOMSCREEN_IID); -NS_DEF_PTR(nsIDOMScreen); - // // Screen property ids // @@ -73,18 +71,19 @@ GetScreenProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case SCREEN_WIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SCREEN_WIDTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SCREEN_WIDTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -93,16 +92,16 @@ GetScreenProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case SCREEN_HEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SCREEN_HEIGHT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SCREEN_HEIGHT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -111,16 +110,16 @@ GetScreenProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case SCREEN_PIXELDEPTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SCREEN_PIXELDEPTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SCREEN_PIXELDEPTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -129,16 +128,16 @@ GetScreenProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case SCREEN_COLORDEPTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SCREEN_COLORDEPTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SCREEN_COLORDEPTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -147,16 +146,16 @@ GetScreenProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case SCREEN_AVAILWIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SCREEN_AVAILWIDTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SCREEN_AVAILWIDTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -165,16 +164,16 @@ GetScreenProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case SCREEN_AVAILHEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SCREEN_AVAILHEIGHT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SCREEN_AVAILHEIGHT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -183,16 +182,16 @@ GetScreenProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case SCREEN_AVAILLEFT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SCREEN_AVAILLEFT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SCREEN_AVAILLEFT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -201,16 +200,16 @@ GetScreenProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case SCREEN_AVAILTOP: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SCREEN_AVAILTOP, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SCREEN_AVAILTOP, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -219,16 +218,16 @@ GetScreenProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -249,19 +248,20 @@ SetScreenProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/base/nsJSUtils.cpp b/mozilla/dom/src/base/nsJSUtils.cpp index 5f8f31ebce1..7e2b7d41705 100644 --- a/mozilla/dom/src/base/nsJSUtils.cpp +++ b/mozilla/dom/src/base/nsJSUtils.cpp @@ -110,6 +110,7 @@ nsJSUtils::nsGetCallingLocation(JSContext* aContext, NS_EXPORT JSBool nsJSUtils::nsReportError(JSContext* aContext, + JSObject* aObj, nsresult aResult, const char* aMessage) { @@ -142,13 +143,15 @@ nsJSUtils::nsReportError(JSContext* aContext, if (NS_SUCCEEDED(rv)) { nsCOMPtr owner = do_QueryInterface(exc); - if (owner) { - JSObject* obj; - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - rv = owner->GetScriptObject(scriptCX, (void**)&obj); - if (NS_SUCCEEDED(rv)) { - JS_SetPendingException(aContext, OBJECT_TO_JSVAL(obj)); + nsCOMPtr scriptCX; + nsGetStaticScriptContext(aContext, aObj, getter_AddRefs(scriptCX)); + if (scriptCX) { + JSObject* obj; + rv = owner->GetScriptObject(scriptCX, (void**)&obj); + if (NS_SUCCEEDED(rv)) { + JS_SetPendingException(aContext, OBJECT_TO_JSVAL(obj)); + } } } } @@ -159,6 +162,7 @@ nsJSUtils::nsReportError(JSContext* aContext, NS_EXPORT PRBool nsJSUtils::nsCallJSScriptObjectGetProperty(nsISupports* aSupports, JSContext* aContext, + JSObject* aObj, jsval aId, jsval* aReturn) { @@ -167,7 +171,7 @@ nsJSUtils::nsCallJSScriptObjectGetProperty(nsISupports* aSupports, if (NS_OK == aSupports->QueryInterface(kIJSScriptObjectIID, (void**)&object)) { PRBool rval; - rval = object->GetProperty(aContext, aId, aReturn); + rval = object->GetProperty(aContext, aObj, aId, aReturn); NS_RELEASE(object); return rval; } @@ -178,6 +182,7 @@ nsJSUtils::nsCallJSScriptObjectGetProperty(nsISupports* aSupports, NS_EXPORT PRBool nsJSUtils::nsLookupGlobalName(nsISupports* aSupports, JSContext* aContext, + JSObject* aObj, jsval aId, jsval* aReturn) { @@ -187,39 +192,44 @@ nsJSUtils::nsLookupGlobalName(nsISupports* aSupports, JSString* jsstring = JSVAL_TO_STRING(aId); nsAutoString name(JS_GetStringChars(jsstring)); nsIScriptNameSpaceManager* manager; - nsIScriptContext* scriptContext = (nsIScriptContext*)JS_GetContextPrivate(aContext); nsIID classID; nsISupports* native; - result = scriptContext->GetNameSpaceManager(&manager); - if (NS_OK == result) { - result = manager->LookupName(name, PR_FALSE, classID); - NS_RELEASE(manager); + nsCOMPtr scriptContext; + nsGetStaticScriptContext(aContext, aObj, getter_AddRefs(scriptContext)); + if (scriptContext) { + result = scriptContext->GetNameSpaceManager(&manager); if (NS_OK == result) { - result = nsComponentManager::CreateInstance(classID, - nsnull, - kISupportsIID, - (void **)&native); + result = manager->LookupName(name, PR_FALSE, classID); + NS_RELEASE(manager); if (NS_OK == result) { - nsConvertObjectToJSVal(native, aContext, aReturn); - return PR_TRUE; - } - else { - return PR_FALSE; + result = nsComponentManager::CreateInstance(classID, + nsnull, + kISupportsIID, + (void **)&native); + if (NS_OK == result) { + nsConvertObjectToJSVal(native, aContext, aObj, aReturn); + return PR_TRUE; + } + else { + return PR_FALSE; + } } + } + else { + return PR_FALSE; } } - else { - return PR_FALSE; - } } - return nsCallJSScriptObjectGetProperty(aSupports, aContext, aId, aReturn); + return nsCallJSScriptObjectGetProperty(aSupports, aContext, aObj, aId, + aReturn); } NS_EXPORT PRBool nsJSUtils::nsCallJSScriptObjectSetProperty(nsISupports* aSupports, JSContext* aContext, + JSObject* aObj, jsval aId, jsval* aReturn) { @@ -228,7 +238,7 @@ nsJSUtils::nsCallJSScriptObjectSetProperty(nsISupports* aSupports, if (NS_OK == aSupports->QueryInterface(kIJSScriptObjectIID, (void**)&object)) { PRBool rval; - rval = object->SetProperty(aContext, aId, aReturn); + rval = object->SetProperty(aContext, aObj, aId, aReturn); NS_RELEASE(object); return rval; } @@ -239,31 +249,34 @@ nsJSUtils::nsCallJSScriptObjectSetProperty(nsISupports* aSupports, NS_EXPORT void nsJSUtils::nsConvertObjectToJSVal(nsISupports* aSupports, JSContext* aContext, + JSObject* aObj, jsval* aReturn) { // get the js object\n" + *aReturn = JSVAL_NULL; if (aSupports != nsnull) { - nsIScriptObjectOwner *owner = nsnull; - if (NS_OK == aSupports->QueryInterface(kIScriptObjectOwnerIID, (void**)&owner)) { - JSObject *object = nsnull; - nsIScriptContext *script_cx = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK == owner->GetScriptObject(script_cx, (void**)&object)) { - // set the return value - *aReturn = OBJECT_TO_JSVAL(object); + nsCOMPtr owner = do_QueryInterface(aSupports); + if (owner) { + nsCOMPtr scriptCX; + nsGetStaticScriptContext(aContext, aObj, getter_AddRefs(scriptCX)); + if (scriptCX) { + JSObject *object = nsnull; + if (NS_OK == owner->GetScriptObject(scriptCX, (void**)&object)) { + // set the return value + *aReturn = OBJECT_TO_JSVAL(object); + } } - NS_RELEASE(owner); } + // XXX the caller really ought to be doing this! NS_RELEASE(aSupports); } - else { - *aReturn = JSVAL_NULL; - } } NS_EXPORT void nsJSUtils::nsConvertXPCObjectToJSVal(nsISupports* aSupports, const nsIID& aIID, JSContext* aContext, + JSObject* aScope, jsval* aReturn) { *aReturn = JSVAL_NULL; // a sane value, just in case something blows up @@ -288,7 +301,7 @@ nsJSUtils::nsConvertXPCObjectToJSVal(nsISupports* aSupports, NS_WITH_SERVICE(nsIXPConnect, xpc, kXPConnectCID, &rv); if (NS_SUCCEEDED(rv)) { nsCOMPtr wrapper; - rv = xpc->WrapNative(aContext, aSupports, aIID, getter_AddRefs(wrapper)); + rv = xpc->WrapNative(aContext, aScope, aSupports, aIID, getter_AddRefs(wrapper)); if (NS_SUCCEEDED(rv)) { JSObject* obj; rv = wrapper->GetJSObject(&obj); @@ -447,10 +460,8 @@ nsJSUtils::nsConvertJSValToFunc(nsIDOMEventListener** aListener, if (NS_OK == NS_NewScriptEventListener(aListener, scriptContext, (void*)aObj, (void*)JSVAL_TO_OBJECT(aValue))) { return JS_TRUE; } - else { - JS_ReportError(aContext, "Out of memory"); - return JS_FALSE; - } + JS_ReportError(aContext, "Out of memory"); + return JS_FALSE; } else { JS_ReportError(aContext, "Parameter isn't a callable object"); @@ -496,7 +507,7 @@ nsJSUtils::nsGenericEnumerate(JSContext* aContext, // get the js object nsIJSScriptObject *object; if (NS_OK == nativeThis->QueryInterface(kIJSScriptObjectIID, (void**)&object)) { - object->EnumerateProperty(aContext); + object->EnumerateProperty(aContext, aObj); NS_RELEASE(object); } } @@ -514,26 +525,30 @@ nsJSUtils::nsGlobalResolve(JSContext* aContext, if (JSVAL_IS_STRING(aId)) { JSString* jsstring = JSVAL_TO_STRING(aId); nsAutoString name(JS_GetStringChars(jsstring)); - nsIScriptNameSpaceManager* manager; - nsIScriptContext* scriptContext = (nsIScriptContext*)JS_GetContextPrivate(aContext); nsIID classID; nsISupports* native; + nsCOMPtr scriptContext; + nsGetStaticScriptContext(aContext, aObj, getter_AddRefs(scriptContext)); + if (!scriptContext) { + return JS_TRUE; + } + if (NS_COMFALSE == scriptContext->IsContextInitialized()) { return JS_TRUE; } - result = scriptContext->GetNameSpaceManager(&manager); - if (NS_OK == result) { + nsCOMPtr manager; + result = scriptContext->GetNameSpaceManager(getter_AddRefs(manager)); + if (manager) { result = manager->LookupName(name, PR_FALSE, classID); - NS_RELEASE(manager); if (NS_OK == result) { result = nsComponentManager::CreateInstance(classID, nsnull, kISupportsIID, (void **)&native); if (NS_OK == result) { - nsConvertObjectToJSVal(native, aContext, &val); + nsConvertObjectToJSVal(native, aContext, aObj, &val); if (JS_DefineProperty(aContext, aObj, JS_GetStringBytes(jsstring), val, nsnull, nsnull, JSPROP_ENUMERATE | JSPROP_READONLY)) { @@ -571,7 +586,7 @@ nsJSUtils::nsGenericResolve(JSContext* aContext, // get the js object nsIJSScriptObject *object; if (NS_OK == nativeThis->QueryInterface(kIJSScriptObjectIID, (void**)&object)) { - object->Resolve(aContext, aId); + object->Resolve(aContext, aObj, aId); NS_RELEASE(object); } } @@ -597,3 +612,77 @@ nsJSUtils::nsGetNativeThis(JSContext* aContext, JSObject* aObj) return nsnull; } +NS_EXPORT nsresult +nsJSUtils::nsGetStaticScriptGlobal(JSContext* aContext, + JSObject* aObj, + nsIScriptGlobalObject** aNativeGlobal) +{ + nsISupports* supports; + JSClass* clazz; + JSObject* parent; + JSObject* glob = aObj; // starting point for search + + if (!glob) + return NS_ERROR_FAILURE; + + while (nsnull != (parent = JS_GetParent(aContext, glob))) + glob = parent; + +#ifdef JS_THREADSAFE + clazz = JS_GetClass(aContext, glob); +#else + clazz = JS_GetClass(glob); +#endif + + if (!clazz || + !(clazz->flags & JSCLASS_HAS_PRIVATE) || + !(clazz->flags & JSCLASS_PRIVATE_IS_NSISUPPORTS) || + !(supports = (nsISupports*) JS_GetPrivate(aContext, glob))) { + return NS_ERROR_FAILURE; + } + + return supports->QueryInterface(NS_GET_IID(nsIScriptGlobalObject), + (void**) aNativeGlobal); +} + +NS_EXPORT nsresult +nsJSUtils::nsGetStaticScriptContext(JSContext* aContext, + JSObject* aObj, + nsIScriptContext** aScriptContext) +{ + nsCOMPtr nativeGlobal; + nsGetStaticScriptGlobal(aContext, aObj, getter_AddRefs(nativeGlobal)); + if (!nativeGlobal) + return NS_ERROR_FAILURE; + nsIScriptContext* scriptContext = nsnull; + nativeGlobal->GetContext(&scriptContext); + *aScriptContext = scriptContext; + return scriptContext ? NS_OK : NS_ERROR_FAILURE; +} + +NS_EXPORT nsresult +nsJSUtils::nsGetDynamicScriptGlobal(JSContext* aContext, + nsIScriptGlobalObject** aNativeGlobal) +{ + nsIScriptGlobalObject* nativeGlobal = nsnull; + nsCOMPtr scriptCX; + nsGetDynamicScriptContext(aContext, getter_AddRefs(scriptCX)); + if (scriptCX) { + *aNativeGlobal = nativeGlobal = scriptCX->GetGlobalObject(); + } + return nativeGlobal ? NS_OK : NS_ERROR_FAILURE; +} + +NS_EXPORT nsresult +nsJSUtils::nsGetDynamicScriptContext(JSContext *aContext, + nsIScriptContext** aScriptContext) +{ + // XXX We rely on the rule that if any JSContext in our JSRuntime has a + // private set then that private *must* be a pointer to an nsISupports. + nsISupports *supports = (nsIScriptContext*) JS_GetContextPrivate(aContext); + if (!supports) + return nsnull; + return supports->QueryInterface(NS_GET_IID(nsIScriptContext), + (void**)aScriptContext); +} + diff --git a/mozilla/dom/src/base/nsJSUtils.h b/mozilla/dom/src/base/nsJSUtils.h index d248eae7801..ba2a4a01beb 100644 --- a/mozilla/dom/src/base/nsJSUtils.h +++ b/mozilla/dom/src/base/nsJSUtils.h @@ -35,6 +35,8 @@ #include "nsString.h" class nsIDOMEventListener; +class nsIScriptContext; +class nsIScriptGlobalObject; class nsJSUtils { public: @@ -43,31 +45,37 @@ public: PRUint32 *aLineno); static NS_EXPORT JSBool nsReportError(JSContext* aContext, + JSObject* aObj, nsresult aResult, const char* aMessage=nsnull); static NS_EXPORT PRBool nsCallJSScriptObjectGetProperty(nsISupports* aSupports, JSContext* aContext, + JSObject* aObj, jsval aId, jsval* aReturn); static NS_EXPORT PRBool nsLookupGlobalName(nsISupports* aSupports, JSContext* aContext, + JSObject* aObj, jsval aId, jsval* aReturn); static NS_EXPORT PRBool nsCallJSScriptObjectSetProperty(nsISupports* aSupports, JSContext* aContext, + JSObject* aObj, jsval aId, jsval* aReturn); static NS_EXPORT void nsConvertObjectToJSVal(nsISupports* aSupports, JSContext* aContext, + JSObject* aObj, jsval* aReturn); static NS_EXPORT void nsConvertXPCObjectToJSVal(nsISupports* aSupports, const nsIID& aIID, JSContext* aContext, + JSObject* aScope, jsval* aReturn); static NS_EXPORT void nsConvertStringToJSVal(const nsString& aProp, @@ -100,7 +108,7 @@ public: static NS_EXPORT void nsGenericFinalize(JSContext* aContext, JSObject* aObj); - + static NS_EXPORT JSBool nsGenericEnumerate(JSContext* aContext, JSObject* aObj); @@ -115,6 +123,20 @@ public: static NS_EXPORT nsISupports* nsGetNativeThis(JSContext* aContext, JSObject* aObj); + static NS_EXPORT nsresult nsGetStaticScriptGlobal(JSContext* aContext, + JSObject* aObj, + nsIScriptGlobalObject** aNativeGlobal); + + static NS_EXPORT nsresult nsGetStaticScriptContext(JSContext* aContext, + JSObject* aObj, + nsIScriptContext** aScriptContext); + + static NS_EXPORT nsresult nsGetDynamicScriptGlobal(JSContext *aContext, + nsIScriptGlobalObject** aNativeGlobal); + + static NS_EXPORT nsresult nsGetDynamicScriptContext(JSContext *aContext, + nsIScriptContext** aScriptContext); + protected: static PRBool NameAndFormatForNSResult(nsresult rv, const char** name, diff --git a/mozilla/dom/src/base/nsJSWindow.cpp b/mozilla/dom/src/base/nsJSWindow.cpp index e8d866840ea..b411c149eea 100644 --- a/mozilla/dom/src/base/nsJSWindow.cpp +++ b/mozilla/dom/src/base/nsJSWindow.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMNavigator.h" #include "nsIDOMElement.h" @@ -66,20 +66,6 @@ static NS_DEFINE_IID(kIEventTargetIID, NS_IDOMEVENTTARGET_IID); static NS_DEFINE_IID(kIWindowIID, NS_IDOMWINDOW_IID); static NS_DEFINE_IID(kIControllersIID, NS_ICONTROLLERS_IID); -NS_DEF_PTR(nsIDOMNavigator); -NS_DEF_PTR(nsIDOMElement); -NS_DEF_PTR(nsIDOMDocument); -NS_DEF_PTR(nsIDOMBarProp); -NS_DEF_PTR(nsIDOMAbstractView); -NS_DEF_PTR(nsIDOMScreen); -NS_DEF_PTR(nsIDOMHistory); -NS_DEF_PTR(nsIDOMEventListener); -NS_DEF_PTR(nsIDOMWindowCollection); -NS_DEF_PTR(nsIDOMEvent); -NS_DEF_PTR(nsIDOMEventTarget); -NS_DEF_PTR(nsIDOMWindow); -NS_DEF_PTR(nsIControllers); - // // Window property ids // @@ -134,322 +120,323 @@ GetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case WINDOW_WINDOW: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_WINDOW, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_WINDOW, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMWindow* prop; nsresult result = NS_OK; result = a->GetWindow(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_SELF: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_SELF, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_SELF, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMWindow* prop; nsresult result = NS_OK; result = a->GetSelf(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_DOCUMENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_DOCUMENT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_DOCUMENT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMDocument* prop; nsresult result = NS_OK; result = a->GetDocument(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_NAVIGATOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_NAVIGATOR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_NAVIGATOR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNavigator* prop; nsresult result = NS_OK; result = a->GetNavigator(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_SCREEN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_SCREEN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_SCREEN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMScreen* prop; nsresult result = NS_OK; result = a->GetScreen(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_HISTORY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_HISTORY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_HISTORY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHistory* prop; nsresult result = NS_OK; result = a->GetHistory(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_PARENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_PARENT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_PARENT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMWindow* prop; nsresult result = NS_OK; result = a->GetParent(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_TOP: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_TOP, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_TOP, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMWindow* prop; nsresult result = NS_OK; result = a->GetTop(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_CONTENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_CONTENT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_CONTENT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMWindow* prop; nsresult result = NS_OK; result = a->GetContent(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_MENUBAR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_MENUBAR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_MENUBAR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMBarProp* prop; nsresult result = NS_OK; result = a->GetMenubar(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_TOOLBAR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_TOOLBAR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_TOOLBAR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMBarProp* prop; nsresult result = NS_OK; result = a->GetToolbar(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_LOCATIONBAR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_LOCATIONBAR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_LOCATIONBAR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMBarProp* prop; nsresult result = NS_OK; result = a->GetLocationbar(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_PERSONALBAR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_PERSONALBAR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_PERSONALBAR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMBarProp* prop; nsresult result = NS_OK; result = a->GetPersonalbar(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_STATUSBAR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_STATUSBAR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_STATUSBAR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMBarProp* prop; nsresult result = NS_OK; result = a->GetStatusbar(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_SCROLLBARS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_SCROLLBARS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_SCROLLBARS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMBarProp* prop; nsresult result = NS_OK; result = a->GetScrollbars(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_DIRECTORIES: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_DIRECTORIES, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_DIRECTORIES, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMBarProp* prop; nsresult result = NS_OK; result = a->GetDirectories(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_CLOSED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_CLOSED, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_CLOSED, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -458,73 +445,73 @@ GetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_FRAMES: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_FRAMES, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_FRAMES, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMWindowCollection* prop; nsresult result = NS_OK; result = a->GetFrames(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_CONTROLLERS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_CONTROLLERS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_CONTROLLERS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIControllers* prop; nsresult result = NS_OK; result = a->GetControllers(&prop); if (NS_SUCCEEDED(result)) { // get the js object; n.b., this will do a release on 'prop' - nsJSUtils::nsConvertXPCObjectToJSVal(prop, nsIControllers::GetIID(), cx, vp); + nsJSUtils::nsConvertXPCObjectToJSVal(prop, nsIControllers::GetIID(), cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_OPENER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_OPENER, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_OPENER, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMWindow* prop; nsresult result = NS_OK; result = a->GetOpener(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_STATUS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_STATUS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_STATUS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -533,16 +520,16 @@ GetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_DEFAULTSTATUS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_DEFAULTSTATUS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_DEFAULTSTATUS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -551,16 +538,16 @@ GetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_NAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_NAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -569,16 +556,16 @@ GetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_INNERWIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_INNERWIDTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_INNERWIDTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -587,16 +574,16 @@ GetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_INNERHEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_INNERHEIGHT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_INNERHEIGHT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -605,16 +592,16 @@ GetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_OUTERWIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_OUTERWIDTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_OUTERWIDTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -623,16 +610,16 @@ GetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_OUTERHEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_OUTERHEIGHT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_OUTERHEIGHT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -641,16 +628,16 @@ GetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_SCREENX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_SCREENX, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_SCREENX, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -659,16 +646,16 @@ GetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_SCREENY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_SCREENY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_SCREENY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -677,16 +664,16 @@ GetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_PAGEXOFFSET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_PAGEXOFFSET, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_PAGEXOFFSET, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -695,16 +682,16 @@ GetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_PAGEYOFFSET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_PAGEYOFFSET, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_PAGEYOFFSET, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -713,16 +700,16 @@ GetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_SCROLLX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_SCROLLX, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_SCROLLX, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -731,16 +718,16 @@ GetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case WINDOW_SCROLLY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_SCROLLY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_SCROLLY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -749,16 +736,16 @@ GetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -779,24 +766,25 @@ SetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case WINDOW_OPENER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_OPENER, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_OPENER, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMWindow* prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&prop, kIWindowIID, "Window", cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } a->SetOpener(prop); @@ -806,9 +794,9 @@ SetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case WINDOW_STATUS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_STATUS, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_STATUS, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -820,9 +808,9 @@ SetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case WINDOW_DEFAULTSTATUS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_DEFAULTSTATUS, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_DEFAULTSTATUS, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -834,9 +822,9 @@ SetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case WINDOW_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_NAME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_NAME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -848,9 +836,9 @@ SetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case WINDOW_INNERWIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_INNERWIDTH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_INNERWIDTH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -858,7 +846,7 @@ SetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetInnerWidth(prop); @@ -868,9 +856,9 @@ SetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case WINDOW_INNERHEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_INNERHEIGHT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_INNERHEIGHT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -878,7 +866,7 @@ SetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetInnerHeight(prop); @@ -888,9 +876,9 @@ SetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case WINDOW_OUTERWIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_OUTERWIDTH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_OUTERWIDTH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -898,7 +886,7 @@ SetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetOuterWidth(prop); @@ -908,9 +896,9 @@ SetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case WINDOW_OUTERHEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_OUTERHEIGHT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_OUTERHEIGHT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -918,7 +906,7 @@ SetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetOuterHeight(prop); @@ -928,9 +916,9 @@ SetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case WINDOW_SCREENX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_SCREENX, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_SCREENX, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -938,7 +926,7 @@ SetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetScreenX(prop); @@ -948,9 +936,9 @@ SetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case WINDOW_SCREENY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_SCREENY, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_SCREENY, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -958,7 +946,7 @@ SetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetScreenY(prop); @@ -968,9 +956,9 @@ SetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case WINDOW_PAGEXOFFSET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_PAGEXOFFSET, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_PAGEXOFFSET, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -978,7 +966,7 @@ SetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetPageXOffset(prop); @@ -988,9 +976,9 @@ SetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case WINDOW_PAGEYOFFSET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_PAGEYOFFSET, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_PAGEYOFFSET, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -998,7 +986,7 @@ SetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetPageYOffset(prop); @@ -1006,11 +994,11 @@ SetWindowProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -1056,37 +1044,38 @@ WindowDump(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) nsIDOMWindow *nativeThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_DUMP, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_DUMP, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->Dump(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -1104,22 +1093,6 @@ WindowAlert(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMWindow *nativeThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_ALERT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -1127,9 +1100,26 @@ WindowAlert(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_ALERT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Alert(cx, argv+0, argc-0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -1148,22 +1138,6 @@ WindowConfirm(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval nsIDOMWindow *nativeThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; PRBool nativeRet; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_CONFIRM, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -1171,9 +1145,26 @@ WindowConfirm(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_CONFIRM, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Confirm(cx, argv+0, argc-0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = BOOLEAN_TO_JSVAL(nativeRet); @@ -1192,22 +1183,6 @@ WindowPrompt(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) nsIDOMWindow *nativeThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsAutoString nativeRet; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_PROMPT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -1215,9 +1190,26 @@ WindowPrompt(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_PROMPT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Prompt(cx, argv+0, argc-0, nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } nsJSUtils::nsConvertStringToJSVal(nativeRet, cx, rval); @@ -1235,22 +1227,6 @@ WindowFocus(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMWindow *nativeThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_FOCUS, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -1258,9 +1234,26 @@ WindowFocus(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_FOCUS, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Focus(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -1278,22 +1271,6 @@ WindowBlur(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMWindow *nativeThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_BLUR, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -1301,9 +1278,26 @@ WindowBlur(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_BLUR, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Blur(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -1321,22 +1315,6 @@ WindowBack(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMWindow *nativeThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_BACK, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -1344,9 +1322,26 @@ WindowBack(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_BACK, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Back(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -1364,22 +1359,6 @@ WindowForward(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval { nsIDOMWindow *nativeThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_FORWARD, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -1387,9 +1366,26 @@ WindowForward(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_FORWARD, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Forward(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -1407,22 +1403,6 @@ WindowHome(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMWindow *nativeThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_HOME, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -1430,9 +1410,26 @@ WindowHome(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_HOME, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Home(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -1450,22 +1447,6 @@ WindowStop(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMWindow *nativeThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_STOP, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -1473,9 +1454,26 @@ WindowStop(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_STOP, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Stop(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -1493,22 +1491,6 @@ WindowPrint(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMWindow *nativeThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_PRINT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -1516,9 +1498,26 @@ WindowPrint(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_PRINT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Print(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -1538,42 +1537,43 @@ WindowMoveTo(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) nsresult result = NS_OK; PRInt32 b0; PRInt32 b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_MOVETO, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_MOVETO, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } if (!JS_ValueToInt32(cx, argv[1], (int32 *)&b1)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->MoveTo(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -1593,42 +1593,43 @@ WindowMoveBy(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) nsresult result = NS_OK; PRInt32 b0; PRInt32 b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_MOVEBY, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_MOVEBY, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } if (!JS_ValueToInt32(cx, argv[1], (int32 *)&b1)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->MoveBy(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -1648,42 +1649,43 @@ WindowResizeTo(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva nsresult result = NS_OK; PRInt32 b0; PRInt32 b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_RESIZETO, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_RESIZETO, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } if (!JS_ValueToInt32(cx, argv[1], (int32 *)&b1)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->ResizeTo(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -1703,42 +1705,43 @@ WindowResizeBy(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva nsresult result = NS_OK; PRInt32 b0; PRInt32 b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_RESIZEBY, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_RESIZEBY, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } if (!JS_ValueToInt32(cx, argv[1], (int32 *)&b1)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->ResizeBy(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -1756,22 +1759,6 @@ WindowSizeToContent(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval { nsIDOMWindow *nativeThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_SIZETOCONTENT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -1779,9 +1766,26 @@ WindowSizeToContent(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_SIZETOCONTENT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->SizeToContent(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -1799,22 +1803,6 @@ WindowGetAttention(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval { nsIDOMWindow *nativeThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_GETATTENTION, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -1822,9 +1810,26 @@ WindowGetAttention(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_GETATTENTION, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->GetAttention(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -1844,42 +1849,43 @@ WindowScroll(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) nsresult result = NS_OK; PRInt32 b0; PRInt32 b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_SCROLL, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_SCROLL, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } if (!JS_ValueToInt32(cx, argv[1], (int32 *)&b1)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->Scroll(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -1899,42 +1905,43 @@ WindowScrollTo(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva nsresult result = NS_OK; PRInt32 b0; PRInt32 b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_SCROLLTO, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_SCROLLTO, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } if (!JS_ValueToInt32(cx, argv[1], (int32 *)&b1)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->ScrollTo(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -1954,42 +1961,43 @@ WindowScrollBy(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva nsresult result = NS_OK; PRInt32 b0; PRInt32 b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_SCROLLBY, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_SCROLLBY, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } if (!JS_ValueToInt32(cx, argv[1], (int32 *)&b1)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->ScrollBy(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -2008,39 +2016,40 @@ WindowClearTimeout(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval nsIDOMWindow *nativeThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; PRInt32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_CLEARTIMEOUT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_CLEARTIMEOUT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->ClearTimeout(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -2059,39 +2068,40 @@ WindowClearInterval(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval nsIDOMWindow *nativeThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; PRInt32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_CLEARINTERVAL, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_CLEARINTERVAL, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->ClearInterval(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -2110,22 +2120,6 @@ WindowSetTimeout(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r nsIDOMWindow *nativeThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; PRInt32 nativeRet; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_SETTIMEOUT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -2133,9 +2127,26 @@ WindowSetTimeout(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_SETTIMEOUT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->SetTimeout(cx, argv+0, argc-0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = INT_TO_JSVAL(nativeRet); @@ -2154,22 +2165,6 @@ WindowSetInterval(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval * nsIDOMWindow *nativeThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; PRInt32 nativeRet; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_SETINTERVAL, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -2177,9 +2172,26 @@ WindowSetInterval(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval * { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_SETINTERVAL, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->SetInterval(cx, argv+0, argc-0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = INT_TO_JSVAL(nativeRet); @@ -2198,39 +2210,40 @@ WindowCaptureEvents(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval nsIDOMWindow *nativeThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; PRInt32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_CAPTUREEVENTS, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_CAPTUREEVENTS, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->CaptureEvents(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -2249,39 +2262,40 @@ WindowReleaseEvents(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval nsIDOMWindow *nativeThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; PRInt32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_RELEASEEVENTS, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_RELEASEEVENTS, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->ReleaseEvents(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -2299,44 +2313,45 @@ WindowRouteEvent(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r { nsIDOMWindow *nativeThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMEventPtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_ROUTEEVENT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_ROUTEEVENT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIEventIID, "Event", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->RouteEvent(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -2354,22 +2369,6 @@ WindowEnableExternalCapture(JSContext *cx, JSObject *obj, uintN argc, jsval *arg { nsIDOMWindow *nativeThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_ENABLEEXTERNALCAPTURE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -2377,9 +2376,26 @@ WindowEnableExternalCapture(JSContext *cx, JSObject *obj, uintN argc, jsval *arg { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_ENABLEEXTERNALCAPTURE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->EnableExternalCapture(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -2397,22 +2413,6 @@ WindowDisableExternalCapture(JSContext *cx, JSObject *obj, uintN argc, jsval *ar { nsIDOMWindow *nativeThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_DISABLEEXTERNALCAPTURE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -2420,9 +2420,26 @@ WindowDisableExternalCapture(JSContext *cx, JSObject *obj, uintN argc, jsval *ar { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_DISABLEEXTERNALCAPTURE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->DisableExternalCapture(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -2441,58 +2458,59 @@ WindowCreatePopup(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval * nsIDOMWindow *nativeThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsIDOMWindow* nativeRet; - nsIDOMElementPtr b0; - nsIDOMElementPtr b1; + nsCOMPtr b0; + nsCOMPtr b1; PRInt32 b2; PRInt32 b3; nsAutoString b4; nsAutoString b5; nsAutoString b6; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_CREATEPOPUP, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_CREATEPOPUP, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 7) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIElementIID, "Element", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b1, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b1), kIElementIID, "Element", cx, argv[1])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } if (!JS_ValueToInt32(cx, argv[2], (int32 *)&b2)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } if (!JS_ValueToInt32(cx, argv[3], (int32 *)&b3)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } nsJSUtils::nsConvertJSValToString(b4, cx, argv[4]); nsJSUtils::nsConvertJSValToString(b5, cx, argv[5]); @@ -2500,10 +2518,10 @@ WindowCreatePopup(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval * result = nativeThis->CreatePopup(b0, b1, b2, b3, b4, b5, b6, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -2519,22 +2537,6 @@ WindowOpen(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) nsIDOMWindow *nativeThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsIDOMWindow* nativeRet; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_OPEN, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -2542,12 +2544,29 @@ WindowOpen(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_OPEN, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Open(cx, argv+0, argc-0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -2563,22 +2582,6 @@ WindowOpenDialog(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r nsIDOMWindow *nativeThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsIDOMWindow* nativeRet; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_OPENDIALOG, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -2586,12 +2589,29 @@ WindowOpenDialog(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_OPENDIALOG, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->OpenDialog(cx, argv+0, argc-0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -2606,22 +2626,6 @@ WindowClose(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMWindow *nativeThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOW_CLOSE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -2629,9 +2633,26 @@ WindowClose(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOW_CLOSE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Close(cx, argv+0, argc-0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -2648,55 +2669,56 @@ PR_STATIC_CALLBACK(JSBool) EventTargetAddEventListener(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMWindow *privateThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); - nsIDOMEventTargetPtr nativeThis = nsnull; + nsCOMPtr nativeThis; nsresult result = NS_OK; - if (NS_OK != privateThis->QueryInterface(kIEventTargetIID, (void **)&nativeThis)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + if (NS_OK != privateThis->QueryInterface(kIEventTargetIID, getter_AddRefs(nativeThis))) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } nsAutoString b0; - nsIDOMEventListenerPtr b1; + nsCOMPtr b1; PRBool b2; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_EVENTTARGET_ADDEVENTLISTENER, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore - if (nsnull == nativeThis) { + if (!nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_EVENTTARGET_ADDEVENTLISTENER, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 3) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); - if (!nsJSUtils::nsConvertJSValToFunc((nsIDOMEventListener**)(nsISupports**) &b1, + if (!nsJSUtils::nsConvertJSValToFunc(getter_AddRefs(b1), cx, obj, argv[1])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_FUNCTION_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_FUNCTION_ERR); } if (!nsJSUtils::nsConvertJSValToBool(&b2, cx, argv[2])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } result = nativeThis->AddEventListener(b0, b1, b2); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -2713,55 +2735,56 @@ PR_STATIC_CALLBACK(JSBool) EventTargetRemoveEventListener(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMWindow *privateThis = (nsIDOMWindow*)nsJSUtils::nsGetNativeThis(cx, obj); - nsIDOMEventTargetPtr nativeThis = nsnull; + nsCOMPtr nativeThis; nsresult result = NS_OK; - if (NS_OK != privateThis->QueryInterface(kIEventTargetIID, (void **)&nativeThis)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + if (NS_OK != privateThis->QueryInterface(kIEventTargetIID, getter_AddRefs(nativeThis))) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } nsAutoString b0; - nsIDOMEventListenerPtr b1; + nsCOMPtr b1; PRBool b2; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_EVENTTARGET_REMOVEEVENTLISTENER, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore - if (nsnull == nativeThis) { + if (!nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_EVENTTARGET_REMOVEEVENTLISTENER, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 3) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); - if (!nsJSUtils::nsConvertJSValToFunc((nsIDOMEventListener**)(nsISupports**) &b1, + if (!nsJSUtils::nsConvertJSValToFunc(getter_AddRefs(b1), cx, obj, argv[1])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_FUNCTION_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_FUNCTION_ERR); } if (!nsJSUtils::nsConvertJSValToBool(&b2, cx, argv[2])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } result = nativeThis->RemoveEventListener(b0, b1, b2); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; diff --git a/mozilla/dom/src/base/nsJSWindowCollection.cpp b/mozilla/dom/src/base/nsJSWindowCollection.cpp index 42708299c53..f0462e2a030 100644 --- a/mozilla/dom/src/base/nsJSWindowCollection.cpp +++ b/mozilla/dom/src/base/nsJSWindowCollection.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMWindowCollection.h" #include "nsIDOMWindow.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIWindowCollectionIID, NS_IDOMWINDOWCOLLECTION_IID); static NS_DEFINE_IID(kIWindowIID, NS_IDOMWINDOW_IID); -NS_DEF_PTR(nsIDOMWindowCollection); -NS_DEF_PTR(nsIDOMWindow); - // // WindowCollection property ids // @@ -70,19 +67,20 @@ GetWindowCollectionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) PRBool checkNamedItem = PR_TRUE; if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } checkNamedItem = PR_FALSE; switch(JSVAL_TO_INT(id)) { case WINDOWCOLLECTION_LENGTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOWCOLLECTION_LENGTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOWCOLLECTION_LENGTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRUint32 prop; nsresult result = NS_OK; @@ -91,7 +89,7 @@ GetWindowCollectionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } @@ -102,10 +100,10 @@ GetWindowCollectionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) result = a->Item(JSVAL_TO_INT(id), &prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } } @@ -128,18 +126,18 @@ GetWindowCollectionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) if (NS_SUCCEEDED(result)) { if (NULL != prop) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -161,20 +159,21 @@ SetWindowCollectionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) PRBool checkNamedItem = PR_TRUE; if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } checkNamedItem = PR_FALSE; switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -221,42 +220,43 @@ WindowCollectionItem(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsva nsresult result = NS_OK; nsIDOMWindow* nativeRet; PRUint32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOWCOLLECTION_ITEM, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOWCOLLECTION_ITEM, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->Item(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -273,40 +273,41 @@ WindowCollectionNamedItem(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, nsresult result = NS_OK; nsIDOMWindow* nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_WINDOWCOLLECTION_NAMEDITEM, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_WINDOWCOLLECTION_NAMEDITEM, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->NamedItem(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; diff --git a/mozilla/dom/src/base/nsLocation.cpp b/mozilla/dom/src/base/nsLocation.cpp index 214fe6bb5ec..09fa7bfc359 100644 --- a/mozilla/dom/src/base/nsLocation.cpp +++ b/mozilla/dom/src/base/nsLocation.cpp @@ -136,13 +136,13 @@ LocationImpl::CheckURL(nsIURI* aURL) return NS_ERROR_FAILURE; // Get security manager. - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (!scriptCX || NS_FAILED(scriptCX->GetSecurityManager(getter_AddRefs(secMan)))) + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &result); + if (NS_FAILED(result)) return NS_ERROR_FAILURE; // Check to see if URI is allowed. - if (NS_FAILED(result = secMan->CheckLoadURIFromScript(scriptCX, aURL))) + if (NS_FAILED(result = secMan->CheckLoadURIFromScript(cx, aURL))) return result; return NS_OK; @@ -690,24 +690,26 @@ LocationImpl::GetSourceURL(JSContext* cx, // whatever connections possible. The problem is that this // could break if any of the connections along the way change. // I wish there were a better way. - nsresult result = NS_OK; - nsIScriptContext* context = (nsIScriptContext*)JS_GetContextPrivate(cx); - - if (nsnull != context) { - nsCOMPtr global; - global = dont_AddRef(context->GetGlobalObject()); - if (global) { - nsCOMPtr webShell; + nsresult result = NS_ERROR_FAILURE; - global->GetWebShell(getter_AddRefs(webShell)); - if (webShell) { - const PRUnichar* url; + // We need to use the dynamically scoped global and assume that the + // current JSContext is a DOM context with a nsIScriptGlobalObject so + // that we can get the url of the caller. + // XXX This will fail on non-DOM contexts :( - // XXX Ughh - incorrect ownership rules for url? - webShell->GetURL(&url); - result = NS_NewURI(sourceURL, url); - } + nsCOMPtr nativeGlob; + nsJSUtils::nsGetDynamicScriptGlobal(cx, getter_AddRefs(nativeGlob)); + if (nativeGlob) { + nsCOMPtr webShell; + + nativeGlob->GetWebShell(getter_AddRefs(webShell)); + if (webShell) { + const PRUnichar* url; + + // XXX Ughh - incorrect ownership rules for url? + webShell->GetURL(&url); + result = NS_NewURI(sourceURL, url); } } @@ -715,19 +717,19 @@ LocationImpl::GetSourceURL(JSContext* cx, } PRBool -LocationImpl::AddProperty(JSContext *aContext, jsval aID, jsval *aVp) +LocationImpl::AddProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { return JS_TRUE; } PRBool -LocationImpl::DeleteProperty(JSContext *aContext, jsval aID, jsval *aVp) +LocationImpl::DeleteProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { return JS_TRUE; } PRBool -LocationImpl::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) +LocationImpl::GetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { PRBool result = PR_TRUE; @@ -756,7 +758,7 @@ LocationImpl::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) } PRBool -LocationImpl::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) +LocationImpl::SetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { nsresult result = NS_OK; @@ -785,25 +787,25 @@ LocationImpl::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) } PRBool -LocationImpl::EnumerateProperty(JSContext *aContext) +LocationImpl::EnumerateProperty(JSContext *aContext, JSObject *aObj) { return JS_TRUE; } PRBool -LocationImpl::Resolve(JSContext *aContext, jsval aID) +LocationImpl::Resolve(JSContext *aContext, JSObject *aObj, jsval aID) { return JS_TRUE; } PRBool -LocationImpl::Convert(JSContext *aContext, jsval aID) +LocationImpl::Convert(JSContext *aContext, JSObject *aObj, jsval aID) { return JS_TRUE; } void -LocationImpl::Finalize(JSContext *aContext) +LocationImpl::Finalize(JSContext *aContext, JSObject *aObj) { } diff --git a/mozilla/dom/src/coreDOM/nsJSAttr.cpp b/mozilla/dom/src/coreDOM/nsJSAttr.cpp index 388be7b02be..070650c6be1 100644 --- a/mozilla/dom/src/coreDOM/nsJSAttr.cpp +++ b/mozilla/dom/src/coreDOM/nsJSAttr.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMAttr.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIAttrIID, NS_IDOMATTR_IID); -NS_DEF_PTR(nsIDOMAttr); - // // Attr property ids // @@ -68,18 +66,19 @@ GetAttrProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case ATTR_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_ATTR_NAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_ATTR_NAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -88,16 +87,16 @@ GetAttrProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case ATTR_SPECIFIED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_ATTR_SPECIFIED, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_ATTR_SPECIFIED, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -106,16 +105,16 @@ GetAttrProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case ATTR_VALUE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_ATTR_VALUE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_ATTR_VALUE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -124,16 +123,16 @@ GetAttrProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -154,18 +153,19 @@ SetAttrProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case ATTR_VALUE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_ATTR_VALUE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_ATTR_VALUE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -175,11 +175,11 @@ SetAttrProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/coreDOM/nsJSCDATASection.cpp b/mozilla/dom/src/coreDOM/nsJSCDATASection.cpp index 2e49017ec68..2ecc615a992 100644 --- a/mozilla/dom/src/coreDOM/nsJSCDATASection.cpp +++ b/mozilla/dom/src/coreDOM/nsJSCDATASection.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMCDATASection.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kICDATASectionIID, NS_IDOMCDATASECTION_IID); -NS_DEF_PTR(nsIDOMCDATASection); - /***********************************************************************/ // @@ -60,19 +58,20 @@ GetCDATASectionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -93,19 +92,20 @@ SetCDATASectionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/coreDOM/nsJSCharacterData.cpp b/mozilla/dom/src/coreDOM/nsJSCharacterData.cpp index 15ca20d1420..4ae74a46547 100644 --- a/mozilla/dom/src/coreDOM/nsJSCharacterData.cpp +++ b/mozilla/dom/src/coreDOM/nsJSCharacterData.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMCharacterData.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kICharacterDataIID, NS_IDOMCHARACTERDATA_IID); -NS_DEF_PTR(nsIDOMCharacterData); - // // CharacterData property ids // @@ -67,18 +65,19 @@ GetCharacterDataProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case CHARACTERDATA_DATA: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CHARACTERDATA_DATA, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CHARACTERDATA_DATA, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -87,16 +86,16 @@ GetCharacterDataProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CHARACTERDATA_LENGTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CHARACTERDATA_LENGTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CHARACTERDATA_LENGTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRUint32 prop; nsresult result = NS_OK; @@ -105,16 +104,16 @@ GetCharacterDataProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -135,18 +134,19 @@ SetCharacterDataProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case CHARACTERDATA_DATA: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CHARACTERDATA_DATA, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CHARACTERDATA_DATA, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -156,11 +156,11 @@ SetCharacterDataProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -208,42 +208,43 @@ CharacterDataSubstringData(JSContext *cx, JSObject *obj, uintN argc, jsval *argv nsAutoString nativeRet; PRUint32 b0; PRUint32 b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CHARACTERDATA_SUBSTRINGDATA, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CHARACTERDATA_SUBSTRINGDATA, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } if (!JS_ValueToInt32(cx, argv[1], (int32 *)&b1)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->SubstringData(b0, b1, nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } nsJSUtils::nsConvertStringToJSVal(nativeRet, cx, rval); @@ -262,37 +263,38 @@ CharacterDataAppendData(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, j nsIDOMCharacterData *nativeThis = (nsIDOMCharacterData*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CHARACTERDATA_APPENDDATA, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CHARACTERDATA_APPENDDATA, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->AppendData(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -312,40 +314,41 @@ CharacterDataInsertData(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, j nsresult result = NS_OK; PRUint32 b0; nsAutoString b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CHARACTERDATA_INSERTDATA, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CHARACTERDATA_INSERTDATA, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } nsJSUtils::nsConvertJSValToString(b1, cx, argv[1]); result = nativeThis->InsertData(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -365,42 +368,43 @@ CharacterDataDeleteData(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, j nsresult result = NS_OK; PRUint32 b0; PRUint32 b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CHARACTERDATA_DELETEDATA, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CHARACTERDATA_DELETEDATA, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } if (!JS_ValueToInt32(cx, argv[1], (int32 *)&b1)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->DeleteData(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -421,43 +425,44 @@ CharacterDataReplaceData(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, PRUint32 b0; PRUint32 b1; nsAutoString b2; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CHARACTERDATA_REPLACEDATA, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CHARACTERDATA_REPLACEDATA, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 3) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } if (!JS_ValueToInt32(cx, argv[1], (int32 *)&b1)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } nsJSUtils::nsConvertJSValToString(b2, cx, argv[2]); result = nativeThis->ReplaceData(b0, b1, b2); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; diff --git a/mozilla/dom/src/coreDOM/nsJSComment.cpp b/mozilla/dom/src/coreDOM/nsJSComment.cpp index 34bbbf49dcd..35a8bfb0d07 100644 --- a/mozilla/dom/src/coreDOM/nsJSComment.cpp +++ b/mozilla/dom/src/coreDOM/nsJSComment.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMComment.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kICommentIID, NS_IDOMCOMMENT_IID); -NS_DEF_PTR(nsIDOMComment); - /***********************************************************************/ // @@ -60,19 +58,20 @@ GetCommentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -93,19 +92,20 @@ SetCommentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/coreDOM/nsJSDOMImplementation.cpp b/mozilla/dom/src/coreDOM/nsJSDOMImplementation.cpp index e1d352aae0d..699b405169b 100644 --- a/mozilla/dom/src/coreDOM/nsJSDOMImplementation.cpp +++ b/mozilla/dom/src/coreDOM/nsJSDOMImplementation.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMDOMImplementation.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIDOMImplementationIID, NS_IDOMDOMIMPLEMENTATION_IID); -NS_DEF_PTR(nsIDOMDOMImplementation); - /***********************************************************************/ // @@ -60,19 +58,20 @@ GetDOMImplementationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -93,19 +92,20 @@ SetDOMImplementationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -153,30 +153,31 @@ DOMImplementationHasFeature(JSContext *cx, JSObject *obj, uintN argc, jsval *arg PRBool nativeRet; nsAutoString b0; nsAutoString b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_DOMIMPLEMENTATION_HASFEATURE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_DOMIMPLEMENTATION_HASFEATURE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); @@ -184,7 +185,7 @@ DOMImplementationHasFeature(JSContext *cx, JSObject *obj, uintN argc, jsval *arg result = nativeThis->HasFeature(b0, b1, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = BOOLEAN_TO_JSVAL(nativeRet); diff --git a/mozilla/dom/src/coreDOM/nsJSDocument.cpp b/mozilla/dom/src/coreDOM/nsJSDocument.cpp index 4ae5268f5b9..1eb6451fda7 100644 --- a/mozilla/dom/src/coreDOM/nsJSDocument.cpp +++ b/mozilla/dom/src/coreDOM/nsJSDocument.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMElement.h" #include "nsIDOMDocument.h" @@ -70,22 +70,6 @@ static NS_DEFINE_IID(kIDocumentFragmentIID, NS_IDOMDOCUMENTFRAGMENT_IID); static NS_DEFINE_IID(kIRangeIID, NS_IDOMRANGE_IID); static NS_DEFINE_IID(kINodeListIID, NS_IDOMNODELIST_IID); -NS_DEF_PTR(nsIDOMElement); -NS_DEF_PTR(nsIDOMDocument); -NS_DEF_PTR(nsIDOMAttr); -NS_DEF_PTR(nsIDOMProcessingInstruction); -NS_DEF_PTR(nsIDOMCDATASection); -NS_DEF_PTR(nsIDOMStyleSheetCollection); -NS_DEF_PTR(nsIDOMText); -NS_DEF_PTR(nsIDOMDOMImplementation); -NS_DEF_PTR(nsIDOMDocumentType); -NS_DEF_PTR(nsIDOMEntityReference); -NS_DEF_PTR(nsIDOMNSDocument); -NS_DEF_PTR(nsIDOMComment); -NS_DEF_PTR(nsIDOMDocumentFragment); -NS_DEF_PTR(nsIDOMRange); -NS_DEF_PTR(nsIDOMNodeList); - // // Document property ids // @@ -113,75 +97,76 @@ GetDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case DOCUMENT_DOCTYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_DOCUMENT_DOCTYPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_DOCUMENT_DOCTYPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMDocumentType* prop; nsresult result = NS_OK; result = a->GetDoctype(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case DOCUMENT_IMPLEMENTATION: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_DOCUMENT_IMPLEMENTATION, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_DOCUMENT_IMPLEMENTATION, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMDOMImplementation* prop; nsresult result = NS_OK; result = a->GetImplementation(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case DOCUMENT_DOCUMENTELEMENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_DOCUMENT_DOCUMENTELEMENT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_DOCUMENT_DOCUMENTELEMENT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMElement* prop; nsresult result = NS_OK; result = a->GetDocumentElement(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case NSDOCUMENT_WIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSDOCUMENT_WIDTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSDOCUMENT_WIDTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsIDOMNSDocument* b; @@ -194,20 +179,20 @@ GetDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } case NSDOCUMENT_HEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSDOCUMENT_HEIGHT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSDOCUMENT_HEIGHT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsIDOMNSDocument* b; @@ -220,20 +205,20 @@ GetDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } case NSDOCUMENT_STYLESHEETS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSDOCUMENT_STYLESHEETS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSDOCUMENT_STYLESHEETS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMStyleSheetCollection* prop; nsIDOMNSDocument* b; @@ -242,25 +227,25 @@ GetDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) result = b->GetStyleSheets(&prop); if(NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); NS_RELEASE(b); } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -281,19 +266,20 @@ SetDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -340,40 +326,41 @@ DocumentCreateElement(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsv nsresult result = NS_OK; nsIDOMElement* nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_DOCUMENT_CREATEELEMENT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_DOCUMENT_CREATEELEMENT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->CreateElement(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -389,22 +376,6 @@ DocumentCreateDocumentFragment(JSContext *cx, JSObject *obj, uintN argc, jsval * nsIDOMDocument *nativeThis = (nsIDOMDocument*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsIDOMDocumentFragment* nativeRet; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_DOCUMENT_CREATEDOCUMENTFRAGMENT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -412,12 +383,29 @@ DocumentCreateDocumentFragment(JSContext *cx, JSObject *obj, uintN argc, jsval * { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_DOCUMENT_CREATEDOCUMENTFRAGMENT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->CreateDocumentFragment(&nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -434,40 +422,41 @@ DocumentCreateTextNode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, js nsresult result = NS_OK; nsIDOMText* nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_DOCUMENT_CREATETEXTNODE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_DOCUMENT_CREATETEXTNODE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->CreateTextNode(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -484,40 +473,41 @@ DocumentCreateComment(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsv nsresult result = NS_OK; nsIDOMComment* nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_DOCUMENT_CREATECOMMENT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_DOCUMENT_CREATECOMMENT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->CreateComment(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -534,40 +524,41 @@ DocumentCreateCDATASection(JSContext *cx, JSObject *obj, uintN argc, jsval *argv nsresult result = NS_OK; nsIDOMCDATASection* nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_DOCUMENT_CREATECDATASECTION, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_DOCUMENT_CREATECDATASECTION, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->CreateCDATASection(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -585,30 +576,31 @@ DocumentCreateProcessingInstruction(JSContext *cx, JSObject *obj, uintN argc, js nsIDOMProcessingInstruction* nativeRet; nsAutoString b0; nsAutoString b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_DOCUMENT_CREATEPROCESSINGINSTRUCTION, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_DOCUMENT_CREATEPROCESSINGINSTRUCTION, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); @@ -616,10 +608,10 @@ DocumentCreateProcessingInstruction(JSContext *cx, JSObject *obj, uintN argc, js result = nativeThis->CreateProcessingInstruction(b0, b1, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -636,40 +628,41 @@ DocumentCreateAttribute(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, j nsresult result = NS_OK; nsIDOMAttr* nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_DOCUMENT_CREATEATTRIBUTE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_DOCUMENT_CREATEATTRIBUTE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->CreateAttribute(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -686,40 +679,41 @@ DocumentCreateEntityReference(JSContext *cx, JSObject *obj, uintN argc, jsval *a nsresult result = NS_OK; nsIDOMEntityReference* nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_DOCUMENT_CREATEENTITYREFERENCE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_DOCUMENT_CREATEENTITYREFERENCE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->CreateEntityReference(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -736,40 +730,41 @@ DocumentGetElementsByTagName(JSContext *cx, JSObject *obj, uintN argc, jsval *ar nsresult result = NS_OK; nsIDOMNodeList* nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_DOCUMENT_GETELEMENTSBYTAGNAME, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_DOCUMENT_GETELEMENTSBYTAGNAME, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->GetElementsByTagName(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -783,39 +778,40 @@ PR_STATIC_CALLBACK(JSBool) NSDocumentCreateElementWithNameSpace(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMDocument *privateThis = (nsIDOMDocument*)nsJSUtils::nsGetNativeThis(cx, obj); - nsIDOMNSDocumentPtr nativeThis = nsnull; + nsCOMPtr nativeThis; nsresult result = NS_OK; - if (NS_OK != privateThis->QueryInterface(kINSDocumentIID, (void **)&nativeThis)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + if (NS_OK != privateThis->QueryInterface(kINSDocumentIID, getter_AddRefs(nativeThis))) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } nsIDOMElement* nativeRet; nsAutoString b0; nsAutoString b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSDOCUMENT_CREATEELEMENTWITHNAMESPACE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore - if (nsnull == nativeThis) { + if (!nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSDOCUMENT_CREATEELEMENTWITHNAMESPACE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); @@ -823,10 +819,10 @@ NSDocumentCreateElementWithNameSpace(JSContext *cx, JSObject *obj, uintN argc, j result = nativeThis->CreateElementWithNameSpace(b0, b1, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -840,42 +836,43 @@ PR_STATIC_CALLBACK(JSBool) NSDocumentCreateRange(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMDocument *privateThis = (nsIDOMDocument*)nsJSUtils::nsGetNativeThis(cx, obj); - nsIDOMNSDocumentPtr nativeThis = nsnull; + nsCOMPtr nativeThis; nsresult result = NS_OK; - if (NS_OK != privateThis->QueryInterface(kINSDocumentIID, (void **)&nativeThis)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + if (NS_OK != privateThis->QueryInterface(kINSDocumentIID, getter_AddRefs(nativeThis))) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } nsIDOMRange* nativeRet; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSDOCUMENT_CREATERANGE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore - if (nsnull == nativeThis) { + if (!nativeThis) { return JS_TRUE; } { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSDOCUMENT_CREATERANGE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->CreateRange(&nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; diff --git a/mozilla/dom/src/coreDOM/nsJSDocumentFragment.cpp b/mozilla/dom/src/coreDOM/nsJSDocumentFragment.cpp index dbcb22c11b6..0a02c64e8e6 100644 --- a/mozilla/dom/src/coreDOM/nsJSDocumentFragment.cpp +++ b/mozilla/dom/src/coreDOM/nsJSDocumentFragment.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMDocumentFragment.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIDocumentFragmentIID, NS_IDOMDOCUMENTFRAGMENT_IID); -NS_DEF_PTR(nsIDOMDocumentFragment); - /***********************************************************************/ // @@ -60,19 +58,20 @@ GetDocumentFragmentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -93,19 +92,20 @@ SetDocumentFragmentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/coreDOM/nsJSDocumentType.cpp b/mozilla/dom/src/coreDOM/nsJSDocumentType.cpp index 0b57d1580a6..ccc4ba5739e 100644 --- a/mozilla/dom/src/coreDOM/nsJSDocumentType.cpp +++ b/mozilla/dom/src/coreDOM/nsJSDocumentType.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMNamedNodeMap.h" #include "nsIDOMDocumentType.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kINamedNodeMapIID, NS_IDOMNAMEDNODEMAP_IID); static NS_DEFINE_IID(kIDocumentTypeIID, NS_IDOMDOCUMENTTYPE_IID); -NS_DEF_PTR(nsIDOMNamedNodeMap); -NS_DEF_PTR(nsIDOMDocumentType); - // // DocumentType property ids // @@ -71,18 +68,19 @@ GetDocumentTypeProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case DOCUMENTTYPE_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_DOCUMENTTYPE_NAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_DOCUMENTTYPE_NAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -91,54 +89,54 @@ GetDocumentTypeProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case DOCUMENTTYPE_ENTITIES: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_DOCUMENTTYPE_ENTITIES, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_DOCUMENTTYPE_ENTITIES, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNamedNodeMap* prop; nsresult result = NS_OK; result = a->GetEntities(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case DOCUMENTTYPE_NOTATIONS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_DOCUMENTTYPE_NOTATIONS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_DOCUMENTTYPE_NOTATIONS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNamedNodeMap* prop; nsresult result = NS_OK; result = a->GetNotations(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -159,19 +157,20 @@ SetDocumentTypeProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/coreDOM/nsJSElement.cpp b/mozilla/dom/src/coreDOM/nsJSElement.cpp index d12e594de97..fd36746f412 100644 --- a/mozilla/dom/src/coreDOM/nsJSElement.cpp +++ b/mozilla/dom/src/coreDOM/nsJSElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMElement.h" #include "nsIDOMAttr.h" @@ -46,10 +46,6 @@ static NS_DEFINE_IID(kIElementIID, NS_IDOMELEMENT_IID); static NS_DEFINE_IID(kIAttrIID, NS_IDOMATTR_IID); static NS_DEFINE_IID(kINodeListIID, NS_IDOMNODELIST_IID); -NS_DEF_PTR(nsIDOMElement); -NS_DEF_PTR(nsIDOMAttr); -NS_DEF_PTR(nsIDOMNodeList); - // // Element property ids // @@ -72,18 +68,19 @@ GetElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case ELEMENT_TAGNAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_ELEMENT_TAGNAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_ELEMENT_TAGNAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -92,16 +89,16 @@ GetElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -122,19 +119,20 @@ SetElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -181,37 +179,38 @@ ElementGetAttribute(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval nsresult result = NS_OK; nsAutoString nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_ELEMENT_GETATTRIBUTE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_ELEMENT_GETATTRIBUTE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->GetAttribute(b0, nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } nsJSUtils::nsConvertStringToJSVal(nativeRet, cx, rval); @@ -231,30 +230,31 @@ ElementSetAttribute(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval nsresult result = NS_OK; nsAutoString b0; nsAutoString b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_ELEMENT_SETATTRIBUTE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_ELEMENT_SETATTRIBUTE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); @@ -262,7 +262,7 @@ ElementSetAttribute(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval result = nativeThis->SetAttribute(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -281,37 +281,38 @@ ElementRemoveAttribute(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, js nsIDOMElement *nativeThis = (nsIDOMElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_ELEMENT_REMOVEATTRIBUTE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_ELEMENT_REMOVEATTRIBUTE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->RemoveAttribute(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -331,40 +332,41 @@ ElementGetAttributeNode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, j nsresult result = NS_OK; nsIDOMAttr* nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_ELEMENT_GETATTRIBUTENODE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_ELEMENT_GETATTRIBUTENODE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->GetAttributeNode(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -380,47 +382,48 @@ ElementSetAttributeNode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, j nsIDOMElement *nativeThis = (nsIDOMElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsIDOMAttr* nativeRet; - nsIDOMAttrPtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_ELEMENT_SETATTRIBUTENODE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_ELEMENT_SETATTRIBUTENODE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIAttrIID, "Attr", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->SetAttributeNode(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -436,47 +439,48 @@ ElementRemoveAttributeNode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv nsIDOMElement *nativeThis = (nsIDOMElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsIDOMAttr* nativeRet; - nsIDOMAttrPtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_ELEMENT_REMOVEATTRIBUTENODE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_ELEMENT_REMOVEATTRIBUTENODE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIAttrIID, "Attr", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->RemoveAttributeNode(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -493,40 +497,41 @@ ElementGetElementsByTagName(JSContext *cx, JSObject *obj, uintN argc, jsval *arg nsresult result = NS_OK; nsIDOMNodeList* nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_ELEMENT_GETELEMENTSBYTAGNAME, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_ELEMENT_GETELEMENTSBYTAGNAME, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->GetElementsByTagName(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -541,22 +546,6 @@ ElementNormalize(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r { nsIDOMElement *nativeThis = (nsIDOMElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_ELEMENT_NORMALIZE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -564,9 +553,26 @@ ElementNormalize(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_ELEMENT_NORMALIZE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Normalize(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; diff --git a/mozilla/dom/src/coreDOM/nsJSEntity.cpp b/mozilla/dom/src/coreDOM/nsJSEntity.cpp index 4f3583b506f..d53b71bdcf7 100644 --- a/mozilla/dom/src/coreDOM/nsJSEntity.cpp +++ b/mozilla/dom/src/coreDOM/nsJSEntity.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMEntity.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIEntityIID, NS_IDOMENTITY_IID); -NS_DEF_PTR(nsIDOMEntity); - // // Entity property ids // @@ -68,18 +66,19 @@ GetEntityProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case ENTITY_PUBLICID: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_ENTITY_PUBLICID, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_ENTITY_PUBLICID, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -88,16 +87,16 @@ GetEntityProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case ENTITY_SYSTEMID: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_ENTITY_SYSTEMID, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_ENTITY_SYSTEMID, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -106,16 +105,16 @@ GetEntityProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case ENTITY_NOTATIONNAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_ENTITY_NOTATIONNAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_ENTITY_NOTATIONNAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -124,16 +123,16 @@ GetEntityProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -154,19 +153,20 @@ SetEntityProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/coreDOM/nsJSEntityReference.cpp b/mozilla/dom/src/coreDOM/nsJSEntityReference.cpp index 01ed7f71020..8a9ea5de51f 100644 --- a/mozilla/dom/src/coreDOM/nsJSEntityReference.cpp +++ b/mozilla/dom/src/coreDOM/nsJSEntityReference.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMEntityReference.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIEntityReferenceIID, NS_IDOMENTITYREFERENCE_IID); -NS_DEF_PTR(nsIDOMEntityReference); - /***********************************************************************/ // @@ -60,19 +58,20 @@ GetEntityReferenceProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -93,19 +92,20 @@ SetEntityReferenceProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/coreDOM/nsJSNamedNodeMap.cpp b/mozilla/dom/src/coreDOM/nsJSNamedNodeMap.cpp index 004be50bc54..33c6f3bc662 100644 --- a/mozilla/dom/src/coreDOM/nsJSNamedNodeMap.cpp +++ b/mozilla/dom/src/coreDOM/nsJSNamedNodeMap.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMNamedNodeMap.h" #include "nsIDOMNode.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kINamedNodeMapIID, NS_IDOMNAMEDNODEMAP_IID); static NS_DEFINE_IID(kINodeIID, NS_IDOMNODE_IID); -NS_DEF_PTR(nsIDOMNamedNodeMap); -NS_DEF_PTR(nsIDOMNode); - // // NamedNodeMap property ids // @@ -69,18 +66,19 @@ GetNamedNodeMapProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case NAMEDNODEMAP_LENGTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NAMEDNODEMAP_LENGTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NAMEDNODEMAP_LENGTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRUint32 prop; nsresult result = NS_OK; @@ -89,7 +87,7 @@ GetNamedNodeMapProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } @@ -100,16 +98,16 @@ GetNamedNodeMapProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) result = a->Item(JSVAL_TO_INT(id), &prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -130,19 +128,20 @@ SetNamedNodeMapProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -189,40 +188,41 @@ NamedNodeMapGetNamedItem(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, nsresult result = NS_OK; nsIDOMNode* nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NAMEDNODEMAP_GETNAMEDITEM, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NAMEDNODEMAP_GETNAMEDITEM, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->GetNamedItem(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -238,47 +238,48 @@ NamedNodeMapSetNamedItem(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, nsIDOMNamedNodeMap *nativeThis = (nsIDOMNamedNodeMap*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsIDOMNode* nativeRet; - nsIDOMNodePtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NAMEDNODEMAP_SETNAMEDITEM, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NAMEDNODEMAP_SETNAMEDITEM, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kINodeIID, "Node", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->SetNamedItem(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -295,40 +296,41 @@ NamedNodeMapRemoveNamedItem(JSContext *cx, JSObject *obj, uintN argc, jsval *arg nsresult result = NS_OK; nsIDOMNode* nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NAMEDNODEMAP_REMOVENAMEDITEM, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NAMEDNODEMAP_REMOVENAMEDITEM, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->RemoveNamedItem(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -345,42 +347,43 @@ NamedNodeMapItem(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r nsresult result = NS_OK; nsIDOMNode* nativeRet; PRUint32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NAMEDNODEMAP_ITEM, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NAMEDNODEMAP_ITEM, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->Item(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; diff --git a/mozilla/dom/src/coreDOM/nsJSNode.cpp b/mozilla/dom/src/coreDOM/nsJSNode.cpp index 352a3a7fa15..d5d28a6f495 100644 --- a/mozilla/dom/src/coreDOM/nsJSNode.cpp +++ b/mozilla/dom/src/coreDOM/nsJSNode.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMDocument.h" #include "nsIDOMNamedNodeMap.h" @@ -52,13 +52,6 @@ static NS_DEFINE_IID(kIEventListenerIID, NS_IDOMEVENTLISTENER_IID); static NS_DEFINE_IID(kIEventTargetIID, NS_IDOMEVENTTARGET_IID); static NS_DEFINE_IID(kINodeListIID, NS_IDOMNODELIST_IID); -NS_DEF_PTR(nsIDOMDocument); -NS_DEF_PTR(nsIDOMNamedNodeMap); -NS_DEF_PTR(nsIDOMNode); -NS_DEF_PTR(nsIDOMEventListener); -NS_DEF_PTR(nsIDOMEventTarget); -NS_DEF_PTR(nsIDOMNodeList); - // // Node property ids // @@ -91,18 +84,19 @@ GetNodeProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case NODE_NODENAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NODE_NODENAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NODE_NODENAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -111,16 +105,16 @@ GetNodeProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case NODE_NODEVALUE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NODE_NODEVALUE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NODE_NODEVALUE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -129,16 +123,16 @@ GetNodeProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case NODE_NODETYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NODE_NODETYPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NODE_NODETYPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRUint16 prop; nsresult result = NS_OK; @@ -147,168 +141,168 @@ GetNodeProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case NODE_PARENTNODE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NODE_PARENTNODE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NODE_PARENTNODE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNode* prop; nsresult result = NS_OK; result = a->GetParentNode(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case NODE_CHILDNODES: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NODE_CHILDNODES, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NODE_CHILDNODES, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNodeList* prop; nsresult result = NS_OK; result = a->GetChildNodes(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case NODE_FIRSTCHILD: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NODE_FIRSTCHILD, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NODE_FIRSTCHILD, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNode* prop; nsresult result = NS_OK; result = a->GetFirstChild(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case NODE_LASTCHILD: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NODE_LASTCHILD, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NODE_LASTCHILD, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNode* prop; nsresult result = NS_OK; result = a->GetLastChild(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case NODE_PREVIOUSSIBLING: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NODE_PREVIOUSSIBLING, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NODE_PREVIOUSSIBLING, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNode* prop; nsresult result = NS_OK; result = a->GetPreviousSibling(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case NODE_NEXTSIBLING: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NODE_NEXTSIBLING, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NODE_NEXTSIBLING, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNode* prop; nsresult result = NS_OK; result = a->GetNextSibling(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case NODE_ATTRIBUTES: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NODE_ATTRIBUTES, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NODE_ATTRIBUTES, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNamedNodeMap* prop; nsresult result = NS_OK; result = a->GetAttributes(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case NODE_OWNERDOCUMENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NODE_OWNERDOCUMENT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NODE_OWNERDOCUMENT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMDocument* prop; nsresult result = NS_OK; result = a->GetOwnerDocument(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -329,18 +323,19 @@ SetNodeProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case NODE_NODEVALUE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NODE_NODEVALUE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NODE_NODEVALUE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -350,11 +345,11 @@ SetNodeProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -400,55 +395,56 @@ NodeInsertBefore(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r nsIDOMNode *nativeThis = (nsIDOMNode*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsIDOMNode* nativeRet; - nsIDOMNodePtr b0; - nsIDOMNodePtr b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NODE_INSERTBEFORE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; + nsCOMPtr b1; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NODE_INSERTBEFORE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kINodeIID, "Node", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b1, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b1), kINodeIID, "Node", cx, argv[1])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->InsertBefore(b0, b1, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -464,55 +460,56 @@ NodeReplaceChild(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r nsIDOMNode *nativeThis = (nsIDOMNode*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsIDOMNode* nativeRet; - nsIDOMNodePtr b0; - nsIDOMNodePtr b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NODE_REPLACECHILD, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; + nsCOMPtr b1; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NODE_REPLACECHILD, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kINodeIID, "Node", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b1, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b1), kINodeIID, "Node", cx, argv[1])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->ReplaceChild(b0, b1, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -528,47 +525,48 @@ NodeRemoveChild(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rv nsIDOMNode *nativeThis = (nsIDOMNode*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsIDOMNode* nativeRet; - nsIDOMNodePtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NODE_REMOVECHILD, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NODE_REMOVECHILD, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kINodeIID, "Node", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->RemoveChild(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -584,47 +582,48 @@ NodeAppendChild(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rv nsIDOMNode *nativeThis = (nsIDOMNode*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsIDOMNode* nativeRet; - nsIDOMNodePtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NODE_APPENDCHILD, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NODE_APPENDCHILD, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kINodeIID, "Node", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->AppendChild(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -640,22 +639,6 @@ NodeHasChildNodes(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval * nsIDOMNode *nativeThis = (nsIDOMNode*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; PRBool nativeRet; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NODE_HASCHILDNODES, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -663,9 +646,26 @@ NodeHasChildNodes(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval * { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NODE_HASCHILDNODES, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->HasChildNodes(&nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = BOOLEAN_TO_JSVAL(nativeRet); @@ -685,42 +685,43 @@ NodeCloneNode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval nsresult result = NS_OK; nsIDOMNode* nativeRet; PRBool b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NODE_CLONENODE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NODE_CLONENODE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!nsJSUtils::nsConvertJSValToBool(&b0, cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } result = nativeThis->CloneNode(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -734,55 +735,56 @@ PR_STATIC_CALLBACK(JSBool) EventTargetAddEventListener(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMNode *privateThis = (nsIDOMNode*)nsJSUtils::nsGetNativeThis(cx, obj); - nsIDOMEventTargetPtr nativeThis = nsnull; + nsCOMPtr nativeThis; nsresult result = NS_OK; - if (NS_OK != privateThis->QueryInterface(kIEventTargetIID, (void **)&nativeThis)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + if (NS_OK != privateThis->QueryInterface(kIEventTargetIID, getter_AddRefs(nativeThis))) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } nsAutoString b0; - nsIDOMEventListenerPtr b1; + nsCOMPtr b1; PRBool b2; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_EVENTTARGET_ADDEVENTLISTENER, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore - if (nsnull == nativeThis) { + if (!nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_EVENTTARGET_ADDEVENTLISTENER, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 3) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); - if (!nsJSUtils::nsConvertJSValToFunc((nsIDOMEventListener**)(nsISupports**) &b1, + if (!nsJSUtils::nsConvertJSValToFunc(getter_AddRefs(b1), cx, obj, argv[1])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_FUNCTION_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_FUNCTION_ERR); } if (!nsJSUtils::nsConvertJSValToBool(&b2, cx, argv[2])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } result = nativeThis->AddEventListener(b0, b1, b2); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -799,55 +801,56 @@ PR_STATIC_CALLBACK(JSBool) EventTargetRemoveEventListener(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMNode *privateThis = (nsIDOMNode*)nsJSUtils::nsGetNativeThis(cx, obj); - nsIDOMEventTargetPtr nativeThis = nsnull; + nsCOMPtr nativeThis; nsresult result = NS_OK; - if (NS_OK != privateThis->QueryInterface(kIEventTargetIID, (void **)&nativeThis)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + if (NS_OK != privateThis->QueryInterface(kIEventTargetIID, getter_AddRefs(nativeThis))) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } nsAutoString b0; - nsIDOMEventListenerPtr b1; + nsCOMPtr b1; PRBool b2; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_EVENTTARGET_REMOVEEVENTLISTENER, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore - if (nsnull == nativeThis) { + if (!nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_EVENTTARGET_REMOVEEVENTLISTENER, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 3) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); - if (!nsJSUtils::nsConvertJSValToFunc((nsIDOMEventListener**)(nsISupports**) &b1, + if (!nsJSUtils::nsConvertJSValToFunc(getter_AddRefs(b1), cx, obj, argv[1])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_FUNCTION_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_FUNCTION_ERR); } if (!nsJSUtils::nsConvertJSValToBool(&b2, cx, argv[2])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } result = nativeThis->RemoveEventListener(b0, b1, b2); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; diff --git a/mozilla/dom/src/coreDOM/nsJSNodeList.cpp b/mozilla/dom/src/coreDOM/nsJSNodeList.cpp index 71edabe6c92..5bf2d67c167 100644 --- a/mozilla/dom/src/coreDOM/nsJSNodeList.cpp +++ b/mozilla/dom/src/coreDOM/nsJSNodeList.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMNode.h" #include "nsIDOMNodeList.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kINodeIID, NS_IDOMNODE_IID); static NS_DEFINE_IID(kINodeListIID, NS_IDOMNODELIST_IID); -NS_DEF_PTR(nsIDOMNode); -NS_DEF_PTR(nsIDOMNodeList); - // // NodeList property ids // @@ -69,18 +66,19 @@ GetNodeListProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case NODELIST_LENGTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NODELIST_LENGTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NODELIST_LENGTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRUint32 prop; nsresult result = NS_OK; @@ -89,7 +87,7 @@ GetNodeListProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } @@ -100,16 +98,16 @@ GetNodeListProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) result = a->Item(JSVAL_TO_INT(id), &prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -130,19 +128,20 @@ SetNodeListProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -189,42 +188,43 @@ NodeListItem(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) nsresult result = NS_OK; nsIDOMNode* nativeRet; PRUint32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NODELIST_ITEM, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NODELIST_ITEM, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->Item(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; diff --git a/mozilla/dom/src/coreDOM/nsJSNotation.cpp b/mozilla/dom/src/coreDOM/nsJSNotation.cpp index 3de31a16b4b..ef3c2b7df48 100644 --- a/mozilla/dom/src/coreDOM/nsJSNotation.cpp +++ b/mozilla/dom/src/coreDOM/nsJSNotation.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMNotation.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kINotationIID, NS_IDOMNOTATION_IID); -NS_DEF_PTR(nsIDOMNotation); - // // Notation property ids // @@ -67,18 +65,19 @@ GetNotationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case NOTATION_PUBLICID: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NOTATION_PUBLICID, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NOTATION_PUBLICID, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -87,16 +86,16 @@ GetNotationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case NOTATION_SYSTEMID: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NOTATION_SYSTEMID, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NOTATION_SYSTEMID, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -105,16 +104,16 @@ GetNotationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -135,19 +134,20 @@ SetNotationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/coreDOM/nsJSProcessingInstruction.cpp b/mozilla/dom/src/coreDOM/nsJSProcessingInstruction.cpp index 59a7b2288cf..0cc8319c159 100644 --- a/mozilla/dom/src/coreDOM/nsJSProcessingInstruction.cpp +++ b/mozilla/dom/src/coreDOM/nsJSProcessingInstruction.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMProcessingInstruction.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIProcessingInstructionIID, NS_IDOMPROCESSINGINSTRUCTION_IID); -NS_DEF_PTR(nsIDOMProcessingInstruction); - // // ProcessingInstruction property ids // @@ -67,18 +65,19 @@ GetProcessingInstructionProperty(JSContext *cx, JSObject *obj, jsval id, jsval * } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case PROCESSINGINSTRUCTION_TARGET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_PROCESSINGINSTRUCTION_TARGET, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_PROCESSINGINSTRUCTION_TARGET, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -87,16 +86,16 @@ GetProcessingInstructionProperty(JSContext *cx, JSObject *obj, jsval id, jsval * nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case PROCESSINGINSTRUCTION_DATA: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_PROCESSINGINSTRUCTION_DATA, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_PROCESSINGINSTRUCTION_DATA, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -105,16 +104,16 @@ GetProcessingInstructionProperty(JSContext *cx, JSObject *obj, jsval id, jsval * nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -135,18 +134,19 @@ SetProcessingInstructionProperty(JSContext *cx, JSObject *obj, jsval id, jsval * } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case PROCESSINGINSTRUCTION_DATA: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_PROCESSINGINSTRUCTION_DATA, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_PROCESSINGINSTRUCTION_DATA, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -156,11 +156,11 @@ SetProcessingInstructionProperty(JSContext *cx, JSObject *obj, jsval id, jsval * break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/coreDOM/nsJSStyleSheet.cpp b/mozilla/dom/src/coreDOM/nsJSStyleSheet.cpp index 29bba50b915..19063654ca7 100644 --- a/mozilla/dom/src/coreDOM/nsJSStyleSheet.cpp +++ b/mozilla/dom/src/coreDOM/nsJSStyleSheet.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMStyleSheet.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIStyleSheetIID, NS_IDOMSTYLESHEET_IID); -NS_DEF_PTR(nsIDOMStyleSheet); - // // StyleSheet property ids // @@ -68,18 +66,19 @@ GetStyleSheetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case STYLESHEET_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_STYLESHEET_TYPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_STYLESHEET_TYPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -88,16 +87,16 @@ GetStyleSheetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case STYLESHEET_DISABLED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_STYLESHEET_DISABLED, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_STYLESHEET_DISABLED, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -106,16 +105,16 @@ GetStyleSheetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case STYLESHEET_READONLY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_STYLESHEET_READONLY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_STYLESHEET_READONLY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -124,16 +123,16 @@ GetStyleSheetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -154,22 +153,23 @@ SetStyleSheetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case STYLESHEET_DISABLED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_STYLESHEET_DISABLED, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_STYLESHEET_DISABLED, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetDisabled(prop); @@ -177,11 +177,11 @@ SetStyleSheetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/coreDOM/nsJSStyleSheetCollection.cpp b/mozilla/dom/src/coreDOM/nsJSStyleSheetCollection.cpp index def477220d5..a6446e27b4b 100644 --- a/mozilla/dom/src/coreDOM/nsJSStyleSheetCollection.cpp +++ b/mozilla/dom/src/coreDOM/nsJSStyleSheetCollection.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMStyleSheetCollection.h" #include "nsIDOMStyleSheet.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIStyleSheetCollectionIID, NS_IDOMSTYLESHEETCOLLECTION_IID); static NS_DEFINE_IID(kIStyleSheetIID, NS_IDOMSTYLESHEET_IID); -NS_DEF_PTR(nsIDOMStyleSheetCollection); -NS_DEF_PTR(nsIDOMStyleSheet); - // // StyleSheetCollection property ids // @@ -69,18 +66,19 @@ GetStyleSheetCollectionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case STYLESHEETCOLLECTION_LENGTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_STYLESHEETCOLLECTION_LENGTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_STYLESHEETCOLLECTION_LENGTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRUint32 prop; nsresult result = NS_OK; @@ -89,7 +87,7 @@ GetStyleSheetCollectionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } @@ -100,16 +98,16 @@ GetStyleSheetCollectionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v result = a->Item(JSVAL_TO_INT(id), &prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -130,19 +128,20 @@ SetStyleSheetCollectionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -189,42 +188,43 @@ StyleSheetCollectionItem(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, nsresult result = NS_OK; nsIDOMStyleSheet* nativeRet; PRUint32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_STYLESHEETCOLLECTION_ITEM, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_STYLESHEETCOLLECTION_ITEM, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->Item(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; diff --git a/mozilla/dom/src/coreDOM/nsJSText.cpp b/mozilla/dom/src/coreDOM/nsJSText.cpp index 64f643de206..4d129b346cb 100644 --- a/mozilla/dom/src/coreDOM/nsJSText.cpp +++ b/mozilla/dom/src/coreDOM/nsJSText.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMText.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kITextIID, NS_IDOMTEXT_IID); -NS_DEF_PTR(nsIDOMText); - /***********************************************************************/ // @@ -60,19 +58,20 @@ GetTextProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -93,19 +92,20 @@ SetTextProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -152,42 +152,43 @@ TextSplitText(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval nsresult result = NS_OK; nsIDOMText* nativeRet; PRUint32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_TEXT_SPLITTEXT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_TEXT_SPLITTEXT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->SplitText(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; diff --git a/mozilla/dom/src/css/nsJSCSS2Properties.cpp b/mozilla/dom/src/css/nsJSCSS2Properties.cpp index 6286e0763d1..740b5612fb6 100644 --- a/mozilla/dom/src/css/nsJSCSS2Properties.cpp +++ b/mozilla/dom/src/css/nsJSCSS2Properties.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMCSS2Properties.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kICSS2PropertiesIID, NS_IDOMCSS2PROPERTIES_IID); -NS_DEF_PTR(nsIDOMCSS2Properties); - // // CSS2Properties property ids // @@ -188,18 +186,19 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case CSS2PROPERTIES_AZIMUTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_AZIMUTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_AZIMUTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -208,16 +207,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BACKGROUND: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BACKGROUND, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BACKGROUND, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -226,16 +225,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BACKGROUNDATTACHMENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BACKGROUNDATTACHMENT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BACKGROUNDATTACHMENT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -244,16 +243,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BACKGROUNDCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BACKGROUNDCOLOR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BACKGROUNDCOLOR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -262,16 +261,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BACKGROUNDIMAGE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BACKGROUNDIMAGE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BACKGROUNDIMAGE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -280,16 +279,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BACKGROUNDPOSITION: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BACKGROUNDPOSITION, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BACKGROUNDPOSITION, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -298,16 +297,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BACKGROUNDREPEAT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BACKGROUNDREPEAT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BACKGROUNDREPEAT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -316,16 +315,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BORDER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDER, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDER, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -334,16 +333,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BORDERCOLLAPSE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERCOLLAPSE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERCOLLAPSE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -352,16 +351,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BORDERCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERCOLOR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERCOLOR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -370,16 +369,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BORDERSPACING: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERSPACING, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERSPACING, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -388,16 +387,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BORDERSTYLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERSTYLE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERSTYLE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -406,16 +405,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BORDERTOP: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERTOP, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERTOP, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -424,16 +423,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BORDERRIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERRIGHT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERRIGHT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -442,16 +441,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BORDERBOTTOM: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERBOTTOM, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERBOTTOM, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -460,16 +459,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BORDERLEFT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERLEFT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERLEFT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -478,16 +477,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BORDERTOPCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERTOPCOLOR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERTOPCOLOR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -496,16 +495,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BORDERRIGHTCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERRIGHTCOLOR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERRIGHTCOLOR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -514,16 +513,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BORDERBOTTOMCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERBOTTOMCOLOR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERBOTTOMCOLOR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -532,16 +531,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BORDERLEFTCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERLEFTCOLOR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERLEFTCOLOR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -550,16 +549,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BORDERTOPSTYLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERTOPSTYLE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERTOPSTYLE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -568,16 +567,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BORDERRIGHTSTYLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERRIGHTSTYLE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERRIGHTSTYLE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -586,16 +585,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BORDERBOTTOMSTYLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERBOTTOMSTYLE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERBOTTOMSTYLE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -604,16 +603,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BORDERLEFTSTYLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERLEFTSTYLE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERLEFTSTYLE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -622,16 +621,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BORDERTOPWIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERTOPWIDTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERTOPWIDTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -640,16 +639,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BORDERRIGHTWIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERRIGHTWIDTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERRIGHTWIDTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -658,16 +657,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BORDERBOTTOMWIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERBOTTOMWIDTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERBOTTOMWIDTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -676,16 +675,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BORDERLEFTWIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERLEFTWIDTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERLEFTWIDTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -694,16 +693,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BORDERWIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERWIDTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERWIDTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -712,16 +711,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_BOTTOM: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BOTTOM, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BOTTOM, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -730,16 +729,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_CAPTIONSIDE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_CAPTIONSIDE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_CAPTIONSIDE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -748,16 +747,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_CLEAR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_CLEAR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_CLEAR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -766,16 +765,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_CLIP: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_CLIP, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_CLIP, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -784,16 +783,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_COLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_COLOR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_COLOR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -802,16 +801,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_CONTENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_CONTENT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_CONTENT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -820,16 +819,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_COUNTERINCREMENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_COUNTERINCREMENT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_COUNTERINCREMENT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -838,16 +837,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_COUNTERRESET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_COUNTERRESET, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_COUNTERRESET, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -856,16 +855,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_CUE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_CUE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_CUE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -874,16 +873,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_CUEAFTER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_CUEAFTER, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_CUEAFTER, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -892,16 +891,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_CUEBEFORE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_CUEBEFORE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_CUEBEFORE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -910,16 +909,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_CURSOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_CURSOR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_CURSOR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -928,16 +927,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_DIRECTION: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_DIRECTION, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_DIRECTION, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -946,16 +945,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_DISPLAY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_DISPLAY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_DISPLAY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -964,16 +963,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_ELEVATION: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_ELEVATION, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_ELEVATION, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -982,16 +981,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_EMPTYCELLS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_EMPTYCELLS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_EMPTYCELLS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1000,16 +999,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_CSSFLOAT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_CSSFLOAT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_CSSFLOAT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1018,16 +1017,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_FONT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_FONT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_FONT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1036,16 +1035,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_FONTFAMILY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTFAMILY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTFAMILY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1054,16 +1053,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_FONTSIZE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTSIZE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTSIZE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1072,16 +1071,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_FONTSIZEADJUST: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTSIZEADJUST, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTSIZEADJUST, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1090,16 +1089,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_FONTSTRETCH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTSTRETCH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTSTRETCH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1108,16 +1107,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_FONTSTYLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTSTYLE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTSTYLE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1126,16 +1125,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_FONTVARIANT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTVARIANT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTVARIANT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1144,16 +1143,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_FONTWEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTWEIGHT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTWEIGHT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1162,16 +1161,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_HEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_HEIGHT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_HEIGHT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1180,16 +1179,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_LEFT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_LEFT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_LEFT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1198,16 +1197,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_LETTERSPACING: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_LETTERSPACING, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_LETTERSPACING, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1216,16 +1215,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_LINEHEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_LINEHEIGHT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_LINEHEIGHT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1234,16 +1233,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_LISTSTYLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_LISTSTYLE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_LISTSTYLE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1252,16 +1251,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_LISTSTYLEIMAGE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_LISTSTYLEIMAGE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_LISTSTYLEIMAGE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1270,16 +1269,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_LISTSTYLEPOSITION: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_LISTSTYLEPOSITION, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_LISTSTYLEPOSITION, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1288,16 +1287,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_LISTSTYLETYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_LISTSTYLETYPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_LISTSTYLETYPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1306,16 +1305,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_MARGIN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_MARGIN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_MARGIN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1324,16 +1323,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_MARGINTOP: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_MARGINTOP, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_MARGINTOP, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1342,16 +1341,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_MARGINRIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_MARGINRIGHT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_MARGINRIGHT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1360,16 +1359,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_MARGINBOTTOM: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_MARGINBOTTOM, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_MARGINBOTTOM, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1378,16 +1377,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_MARGINLEFT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_MARGINLEFT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_MARGINLEFT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1396,16 +1395,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_MARKEROFFSET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_MARKEROFFSET, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_MARKEROFFSET, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1414,16 +1413,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_MARKS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_MARKS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_MARKS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1432,16 +1431,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_MAXHEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_MAXHEIGHT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_MAXHEIGHT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1450,16 +1449,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_MAXWIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_MAXWIDTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_MAXWIDTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1468,16 +1467,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_MINHEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_MINHEIGHT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_MINHEIGHT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1486,16 +1485,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_MINWIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_MINWIDTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_MINWIDTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1504,16 +1503,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_ORPHANS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_ORPHANS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_ORPHANS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1522,16 +1521,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_OUTLINE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_OUTLINE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_OUTLINE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1540,16 +1539,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_OUTLINECOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_OUTLINECOLOR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_OUTLINECOLOR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1558,16 +1557,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_OUTLINESTYLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_OUTLINESTYLE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_OUTLINESTYLE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1576,16 +1575,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_OUTLINEWIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_OUTLINEWIDTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_OUTLINEWIDTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1594,16 +1593,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_OVERFLOW: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_OVERFLOW, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_OVERFLOW, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1612,16 +1611,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_PADDING: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PADDING, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PADDING, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1630,16 +1629,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_PADDINGTOP: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PADDINGTOP, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PADDINGTOP, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1648,16 +1647,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_PADDINGRIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PADDINGRIGHT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PADDINGRIGHT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1666,16 +1665,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_PADDINGBOTTOM: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PADDINGBOTTOM, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PADDINGBOTTOM, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1684,16 +1683,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_PADDINGLEFT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PADDINGLEFT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PADDINGLEFT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1702,16 +1701,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_PAGE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PAGE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PAGE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1720,16 +1719,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_PAGEBREAKAFTER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PAGEBREAKAFTER, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PAGEBREAKAFTER, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1738,16 +1737,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_PAGEBREAKBEFORE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PAGEBREAKBEFORE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PAGEBREAKBEFORE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1756,16 +1755,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_PAGEBREAKINSIDE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PAGEBREAKINSIDE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PAGEBREAKINSIDE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1774,16 +1773,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_PAUSE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PAUSE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PAUSE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1792,16 +1791,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_PAUSEAFTER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PAUSEAFTER, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PAUSEAFTER, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1810,16 +1809,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_PAUSEBEFORE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PAUSEBEFORE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PAUSEBEFORE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1828,16 +1827,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_PITCH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PITCH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PITCH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1846,16 +1845,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_PITCHRANGE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PITCHRANGE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PITCHRANGE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1864,16 +1863,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_PLAYDURING: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PLAYDURING, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PLAYDURING, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1882,16 +1881,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_POSITION: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_POSITION, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_POSITION, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1900,16 +1899,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_QUOTES: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_QUOTES, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_QUOTES, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1918,16 +1917,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_RICHNESS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_RICHNESS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_RICHNESS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1936,16 +1935,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_RIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_RIGHT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_RIGHT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1954,16 +1953,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_SIZE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_SIZE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_SIZE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1972,16 +1971,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_SPEAK: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_SPEAK, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_SPEAK, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -1990,16 +1989,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_SPEAKHEADER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_SPEAKHEADER, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_SPEAKHEADER, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -2008,16 +2007,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_SPEAKNUMERAL: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_SPEAKNUMERAL, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_SPEAKNUMERAL, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -2026,16 +2025,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_SPEAKPUNCTUATION: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_SPEAKPUNCTUATION, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_SPEAKPUNCTUATION, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -2044,16 +2043,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_SPEECHRATE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_SPEECHRATE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_SPEECHRATE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -2062,16 +2061,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_STRESS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_STRESS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_STRESS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -2080,16 +2079,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_TABLELAYOUT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_TABLELAYOUT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_TABLELAYOUT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -2098,16 +2097,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_TEXTALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_TEXTALIGN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_TEXTALIGN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -2116,16 +2115,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_TEXTDECORATION: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_TEXTDECORATION, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_TEXTDECORATION, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -2134,16 +2133,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_TEXTINDENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_TEXTINDENT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_TEXTINDENT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -2152,16 +2151,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_TEXTSHADOW: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_TEXTSHADOW, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_TEXTSHADOW, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -2170,16 +2169,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_TEXTTRANSFORM: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_TEXTTRANSFORM, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_TEXTTRANSFORM, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -2188,16 +2187,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_TOP: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_TOP, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_TOP, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -2206,16 +2205,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_UNICODEBIDI: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_UNICODEBIDI, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_UNICODEBIDI, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -2224,16 +2223,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_VERTICALALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_VERTICALALIGN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_VERTICALALIGN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -2242,16 +2241,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_VISIBILITY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_VISIBILITY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_VISIBILITY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -2260,16 +2259,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_VOICEFAMILY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_VOICEFAMILY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_VOICEFAMILY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -2278,16 +2277,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_VOLUME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_VOLUME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_VOLUME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -2296,16 +2295,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_WHITESPACE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_WHITESPACE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_WHITESPACE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -2314,16 +2313,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_WIDOWS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_WIDOWS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_WIDOWS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -2332,16 +2331,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_WIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_WIDTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_WIDTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -2350,16 +2349,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_WORDSPACING: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_WORDSPACING, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_WORDSPACING, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -2368,16 +2367,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_ZINDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_ZINDEX, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_ZINDEX, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -2386,16 +2385,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSS2PROPERTIES_OPACITY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_OPACITY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_OPACITY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -2404,16 +2403,16 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -2434,18 +2433,19 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case CSS2PROPERTIES_AZIMUTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_AZIMUTH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_AZIMUTH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2457,9 +2457,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BACKGROUND: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BACKGROUND, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BACKGROUND, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2471,9 +2471,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BACKGROUNDATTACHMENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BACKGROUNDATTACHMENT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BACKGROUNDATTACHMENT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2485,9 +2485,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BACKGROUNDCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BACKGROUNDCOLOR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BACKGROUNDCOLOR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2499,9 +2499,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BACKGROUNDIMAGE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BACKGROUNDIMAGE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BACKGROUNDIMAGE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2513,9 +2513,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BACKGROUNDPOSITION: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BACKGROUNDPOSITION, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BACKGROUNDPOSITION, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2527,9 +2527,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BACKGROUNDREPEAT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BACKGROUNDREPEAT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BACKGROUNDREPEAT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2541,9 +2541,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BORDER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDER, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDER, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2555,9 +2555,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BORDERCOLLAPSE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERCOLLAPSE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERCOLLAPSE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2569,9 +2569,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BORDERCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERCOLOR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERCOLOR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2583,9 +2583,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BORDERSPACING: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERSPACING, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERSPACING, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2597,9 +2597,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BORDERSTYLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERSTYLE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERSTYLE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2611,9 +2611,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BORDERTOP: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERTOP, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERTOP, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2625,9 +2625,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BORDERRIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERRIGHT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERRIGHT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2639,9 +2639,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BORDERBOTTOM: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERBOTTOM, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERBOTTOM, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2653,9 +2653,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BORDERLEFT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERLEFT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERLEFT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2667,9 +2667,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BORDERTOPCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERTOPCOLOR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERTOPCOLOR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2681,9 +2681,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BORDERRIGHTCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERRIGHTCOLOR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERRIGHTCOLOR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2695,9 +2695,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BORDERBOTTOMCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERBOTTOMCOLOR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERBOTTOMCOLOR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2709,9 +2709,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BORDERLEFTCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERLEFTCOLOR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERLEFTCOLOR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2723,9 +2723,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BORDERTOPSTYLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERTOPSTYLE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERTOPSTYLE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2737,9 +2737,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BORDERRIGHTSTYLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERRIGHTSTYLE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERRIGHTSTYLE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2751,9 +2751,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BORDERBOTTOMSTYLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERBOTTOMSTYLE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERBOTTOMSTYLE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2765,9 +2765,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BORDERLEFTSTYLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERLEFTSTYLE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERLEFTSTYLE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2779,9 +2779,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BORDERTOPWIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERTOPWIDTH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERTOPWIDTH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2793,9 +2793,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BORDERRIGHTWIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERRIGHTWIDTH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERRIGHTWIDTH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2807,9 +2807,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BORDERBOTTOMWIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERBOTTOMWIDTH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERBOTTOMWIDTH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2821,9 +2821,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BORDERLEFTWIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERLEFTWIDTH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERLEFTWIDTH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2835,9 +2835,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BORDERWIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERWIDTH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BORDERWIDTH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2849,9 +2849,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_BOTTOM: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_BOTTOM, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BOTTOM, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2863,9 +2863,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_CAPTIONSIDE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_CAPTIONSIDE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_CAPTIONSIDE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2877,9 +2877,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_CLEAR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_CLEAR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_CLEAR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2891,9 +2891,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_CLIP: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_CLIP, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_CLIP, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2905,9 +2905,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_COLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_COLOR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_COLOR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2919,9 +2919,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_CONTENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_CONTENT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_CONTENT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2933,9 +2933,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_COUNTERINCREMENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_COUNTERINCREMENT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_COUNTERINCREMENT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2947,9 +2947,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_COUNTERRESET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_COUNTERRESET, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_COUNTERRESET, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2961,9 +2961,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_CUE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_CUE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_CUE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2975,9 +2975,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_CUEAFTER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_CUEAFTER, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_CUEAFTER, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -2989,9 +2989,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_CUEBEFORE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_CUEBEFORE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_CUEBEFORE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3003,9 +3003,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_CURSOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_CURSOR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_CURSOR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3017,9 +3017,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_DIRECTION: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_DIRECTION, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_DIRECTION, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3031,9 +3031,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_DISPLAY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_DISPLAY, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_DISPLAY, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3045,9 +3045,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_ELEVATION: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_ELEVATION, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_ELEVATION, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3059,9 +3059,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_EMPTYCELLS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_EMPTYCELLS, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_EMPTYCELLS, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3073,9 +3073,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_CSSFLOAT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_CSSFLOAT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_CSSFLOAT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3087,9 +3087,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_FONT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_FONT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_FONT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3101,9 +3101,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_FONTFAMILY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTFAMILY, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTFAMILY, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3115,9 +3115,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_FONTSIZE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTSIZE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTSIZE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3129,9 +3129,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_FONTSIZEADJUST: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTSIZEADJUST, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTSIZEADJUST, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3143,9 +3143,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_FONTSTRETCH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTSTRETCH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTSTRETCH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3157,9 +3157,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_FONTSTYLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTSTYLE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTSTYLE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3171,9 +3171,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_FONTVARIANT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTVARIANT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTVARIANT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3185,9 +3185,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_FONTWEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTWEIGHT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_FONTWEIGHT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3199,9 +3199,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_HEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_HEIGHT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_HEIGHT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3213,9 +3213,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_LEFT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_LEFT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_LEFT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3227,9 +3227,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_LETTERSPACING: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_LETTERSPACING, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_LETTERSPACING, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3241,9 +3241,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_LINEHEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_LINEHEIGHT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_LINEHEIGHT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3255,9 +3255,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_LISTSTYLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_LISTSTYLE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_LISTSTYLE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3269,9 +3269,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_LISTSTYLEIMAGE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_LISTSTYLEIMAGE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_LISTSTYLEIMAGE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3283,9 +3283,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_LISTSTYLEPOSITION: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_LISTSTYLEPOSITION, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_LISTSTYLEPOSITION, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3297,9 +3297,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_LISTSTYLETYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_LISTSTYLETYPE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_LISTSTYLETYPE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3311,9 +3311,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_MARGIN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_MARGIN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_MARGIN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3325,9 +3325,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_MARGINTOP: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_MARGINTOP, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_MARGINTOP, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3339,9 +3339,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_MARGINRIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_MARGINRIGHT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_MARGINRIGHT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3353,9 +3353,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_MARGINBOTTOM: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_MARGINBOTTOM, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_MARGINBOTTOM, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3367,9 +3367,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_MARGINLEFT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_MARGINLEFT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_MARGINLEFT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3381,9 +3381,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_MARKEROFFSET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_MARKEROFFSET, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_MARKEROFFSET, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3395,9 +3395,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_MARKS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_MARKS, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_MARKS, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3409,9 +3409,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_MAXHEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_MAXHEIGHT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_MAXHEIGHT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3423,9 +3423,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_MAXWIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_MAXWIDTH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_MAXWIDTH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3437,9 +3437,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_MINHEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_MINHEIGHT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_MINHEIGHT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3451,9 +3451,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_MINWIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_MINWIDTH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_MINWIDTH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3465,9 +3465,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_ORPHANS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_ORPHANS, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_ORPHANS, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3479,9 +3479,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_OUTLINE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_OUTLINE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_OUTLINE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3493,9 +3493,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_OUTLINECOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_OUTLINECOLOR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_OUTLINECOLOR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3507,9 +3507,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_OUTLINESTYLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_OUTLINESTYLE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_OUTLINESTYLE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3521,9 +3521,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_OUTLINEWIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_OUTLINEWIDTH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_OUTLINEWIDTH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3535,9 +3535,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_OVERFLOW: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_OVERFLOW, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_OVERFLOW, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3549,9 +3549,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_PADDING: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PADDING, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PADDING, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3563,9 +3563,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_PADDINGTOP: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PADDINGTOP, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PADDINGTOP, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3577,9 +3577,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_PADDINGRIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PADDINGRIGHT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PADDINGRIGHT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3591,9 +3591,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_PADDINGBOTTOM: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PADDINGBOTTOM, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PADDINGBOTTOM, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3605,9 +3605,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_PADDINGLEFT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PADDINGLEFT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PADDINGLEFT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3619,9 +3619,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_PAGE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PAGE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PAGE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3633,9 +3633,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_PAGEBREAKAFTER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PAGEBREAKAFTER, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PAGEBREAKAFTER, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3647,9 +3647,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_PAGEBREAKBEFORE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PAGEBREAKBEFORE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PAGEBREAKBEFORE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3661,9 +3661,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_PAGEBREAKINSIDE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PAGEBREAKINSIDE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PAGEBREAKINSIDE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3675,9 +3675,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_PAUSE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PAUSE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PAUSE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3689,9 +3689,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_PAUSEAFTER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PAUSEAFTER, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PAUSEAFTER, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3703,9 +3703,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_PAUSEBEFORE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PAUSEBEFORE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PAUSEBEFORE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3717,9 +3717,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_PITCH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PITCH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PITCH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3731,9 +3731,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_PITCHRANGE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PITCHRANGE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PITCHRANGE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3745,9 +3745,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_PLAYDURING: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_PLAYDURING, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_PLAYDURING, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3759,9 +3759,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_POSITION: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_POSITION, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_POSITION, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3773,9 +3773,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_QUOTES: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_QUOTES, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_QUOTES, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3787,9 +3787,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_RICHNESS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_RICHNESS, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_RICHNESS, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3801,9 +3801,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_RIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_RIGHT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_RIGHT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3815,9 +3815,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_SIZE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_SIZE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_SIZE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3829,9 +3829,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_SPEAK: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_SPEAK, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_SPEAK, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3843,9 +3843,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_SPEAKHEADER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_SPEAKHEADER, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_SPEAKHEADER, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3857,9 +3857,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_SPEAKNUMERAL: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_SPEAKNUMERAL, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_SPEAKNUMERAL, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3871,9 +3871,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_SPEAKPUNCTUATION: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_SPEAKPUNCTUATION, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_SPEAKPUNCTUATION, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3885,9 +3885,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_SPEECHRATE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_SPEECHRATE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_SPEECHRATE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3899,9 +3899,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_STRESS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_STRESS, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_STRESS, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3913,9 +3913,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_TABLELAYOUT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_TABLELAYOUT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_TABLELAYOUT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3927,9 +3927,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_TEXTALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_TEXTALIGN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_TEXTALIGN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3941,9 +3941,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_TEXTDECORATION: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_TEXTDECORATION, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_TEXTDECORATION, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3955,9 +3955,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_TEXTINDENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_TEXTINDENT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_TEXTINDENT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3969,9 +3969,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_TEXTSHADOW: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_TEXTSHADOW, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_TEXTSHADOW, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3983,9 +3983,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_TEXTTRANSFORM: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_TEXTTRANSFORM, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_TEXTTRANSFORM, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -3997,9 +3997,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_TOP: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_TOP, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_TOP, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -4011,9 +4011,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_UNICODEBIDI: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_UNICODEBIDI, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_UNICODEBIDI, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -4025,9 +4025,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_VERTICALALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_VERTICALALIGN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_VERTICALALIGN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -4039,9 +4039,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_VISIBILITY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_VISIBILITY, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_VISIBILITY, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -4053,9 +4053,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_VOICEFAMILY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_VOICEFAMILY, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_VOICEFAMILY, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -4067,9 +4067,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_VOLUME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_VOLUME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_VOLUME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -4081,9 +4081,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_WHITESPACE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_WHITESPACE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_WHITESPACE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -4095,9 +4095,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_WIDOWS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_WIDOWS, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_WIDOWS, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -4109,9 +4109,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_WIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_WIDTH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_WIDTH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -4123,9 +4123,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_WORDSPACING: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_WORDSPACING, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_WORDSPACING, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -4137,9 +4137,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_ZINDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_ZINDEX, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_ZINDEX, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -4151,9 +4151,9 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSS2PROPERTIES_OPACITY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSS2PROPERTIES_OPACITY, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_OPACITY, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -4163,11 +4163,11 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/css/nsJSCSSFontFaceRule.cpp b/mozilla/dom/src/css/nsJSCSSFontFaceRule.cpp index 318587cfc98..be83117849f 100644 --- a/mozilla/dom/src/css/nsJSCSSFontFaceRule.cpp +++ b/mozilla/dom/src/css/nsJSCSSFontFaceRule.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMCSSStyleDeclaration.h" #include "nsIDOMCSSFontFaceRule.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kICSSStyleDeclarationIID, NS_IDOMCSSSTYLEDECLARATION_IID); static NS_DEFINE_IID(kICSSFontFaceRuleIID, NS_IDOMCSSFONTFACERULE_IID); -NS_DEF_PTR(nsIDOMCSSStyleDeclaration); -NS_DEF_PTR(nsIDOMCSSFontFaceRule); - // // CSSFontFaceRule property ids // @@ -69,37 +66,38 @@ GetCSSFontFaceRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case CSSFONTFACERULE_STYLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSFONTFACERULE_STYLE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSFONTFACERULE_STYLE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMCSSStyleDeclaration* prop; nsresult result = NS_OK; result = a->GetStyle(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -120,24 +118,25 @@ SetCSSFontFaceRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case CSSFONTFACERULE_STYLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSFONTFACERULE_STYLE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSFONTFACERULE_STYLE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMCSSStyleDeclaration* prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&prop, kICSSStyleDeclarationIID, "CSSStyleDeclaration", cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } a->SetStyle(prop); @@ -145,11 +144,11 @@ SetCSSFontFaceRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/css/nsJSCSSImportRule.cpp b/mozilla/dom/src/css/nsJSCSSImportRule.cpp index 02547e71944..d750fd82877 100644 --- a/mozilla/dom/src/css/nsJSCSSImportRule.cpp +++ b/mozilla/dom/src/css/nsJSCSSImportRule.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMCSSImportRule.h" #include "nsIDOMCSSStyleSheet.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kICSSImportRuleIID, NS_IDOMCSSIMPORTRULE_IID); static NS_DEFINE_IID(kICSSStyleSheetIID, NS_IDOMCSSSTYLESHEET_IID); -NS_DEF_PTR(nsIDOMCSSImportRule); -NS_DEF_PTR(nsIDOMCSSStyleSheet); - // // CSSImportRule property ids // @@ -71,18 +68,19 @@ GetCSSImportRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case CSSIMPORTRULE_HREF: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSIMPORTRULE_HREF, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSIMPORTRULE_HREF, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -91,16 +89,16 @@ GetCSSImportRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSSIMPORTRULE_MEDIA: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSIMPORTRULE_MEDIA, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSIMPORTRULE_MEDIA, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -109,35 +107,35 @@ GetCSSImportRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSSIMPORTRULE_STYLESHEET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSIMPORTRULE_STYLESHEET, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSIMPORTRULE_STYLESHEET, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMCSSStyleSheet* prop; nsresult result = NS_OK; result = a->GetStyleSheet(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -158,18 +156,19 @@ SetCSSImportRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case CSSIMPORTRULE_HREF: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSIMPORTRULE_HREF, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSIMPORTRULE_HREF, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -181,9 +180,9 @@ SetCSSImportRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSSIMPORTRULE_MEDIA: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSIMPORTRULE_MEDIA, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSIMPORTRULE_MEDIA, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -193,11 +192,11 @@ SetCSSImportRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/css/nsJSCSSMediaRule.cpp b/mozilla/dom/src/css/nsJSCSSMediaRule.cpp index 5bef1ba73ea..df7702f0075 100644 --- a/mozilla/dom/src/css/nsJSCSSMediaRule.cpp +++ b/mozilla/dom/src/css/nsJSCSSMediaRule.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMCSSStyleRuleCollection.h" #include "nsIDOMCSSMediaRule.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kICSSStyleRuleCollectionIID, NS_IDOMCSSSTYLERULECOLLECTION_IID); static NS_DEFINE_IID(kICSSMediaRuleIID, NS_IDOMCSSMEDIARULE_IID); -NS_DEF_PTR(nsIDOMCSSStyleRuleCollection); -NS_DEF_PTR(nsIDOMCSSMediaRule); - // // CSSMediaRule property ids // @@ -70,18 +67,19 @@ GetCSSMediaRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case CSSMEDIARULE_MEDIATYPES: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSMEDIARULE_MEDIATYPES, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSMEDIARULE_MEDIATYPES, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -90,35 +88,35 @@ GetCSSMediaRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSSMEDIARULE_CSSRULES: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSMEDIARULE_CSSRULES, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSMEDIARULE_CSSRULES, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMCSSStyleRuleCollection* prop; nsresult result = NS_OK; result = a->GetCssRules(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -139,18 +137,19 @@ SetCSSMediaRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case CSSMEDIARULE_MEDIATYPES: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSMEDIARULE_MEDIATYPES, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSMEDIARULE_MEDIATYPES, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -160,11 +159,11 @@ SetCSSMediaRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -212,40 +211,41 @@ CSSMediaRuleInsertRule(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, js PRUint32 nativeRet; nsAutoString b0; PRUint32 b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSMEDIARULE_INSERTRULE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSMEDIARULE_INSERTRULE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); if (!JS_ValueToInt32(cx, argv[1], (int32 *)&b1)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->InsertRule(b0, b1, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = INT_TO_JSVAL(nativeRet); @@ -264,39 +264,40 @@ CSSMediaRuleDeleteRule(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, js nsIDOMCSSMediaRule *nativeThis = (nsIDOMCSSMediaRule*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; PRUint32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSMEDIARULE_DELETERULE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSMEDIARULE_DELETERULE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->DeleteRule(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; diff --git a/mozilla/dom/src/css/nsJSCSSPageRule.cpp b/mozilla/dom/src/css/nsJSCSSPageRule.cpp index ef99e7e846b..fea3b11f4db 100644 --- a/mozilla/dom/src/css/nsJSCSSPageRule.cpp +++ b/mozilla/dom/src/css/nsJSCSSPageRule.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMCSSPageRule.h" #include "nsIDOMCSSStyleDeclaration.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kICSSPageRuleIID, NS_IDOMCSSPAGERULE_IID); static NS_DEFINE_IID(kICSSStyleDeclarationIID, NS_IDOMCSSSTYLEDECLARATION_IID); -NS_DEF_PTR(nsIDOMCSSPageRule); -NS_DEF_PTR(nsIDOMCSSStyleDeclaration); - // // CSSPageRule property ids // @@ -70,18 +67,19 @@ GetCSSPageRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case CSSPAGERULE_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSPAGERULE_NAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSPAGERULE_NAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -90,35 +88,35 @@ GetCSSPageRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSSPAGERULE_STYLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSPAGERULE_STYLE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSPAGERULE_STYLE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMCSSStyleDeclaration* prop; nsresult result = NS_OK; result = a->GetStyle(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -139,18 +137,19 @@ SetCSSPageRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case CSSPAGERULE_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSPAGERULE_NAME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSPAGERULE_NAME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -162,15 +161,15 @@ SetCSSPageRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSSPAGERULE_STYLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSPAGERULE_STYLE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSPAGERULE_STYLE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMCSSStyleDeclaration* prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&prop, kICSSStyleDeclarationIID, "CSSStyleDeclaration", cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } a->SetStyle(prop); @@ -178,11 +177,11 @@ SetCSSPageRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/css/nsJSCSSRule.cpp b/mozilla/dom/src/css/nsJSCSSRule.cpp index ca9272006a2..fd8cf3f270b 100644 --- a/mozilla/dom/src/css/nsJSCSSRule.cpp +++ b/mozilla/dom/src/css/nsJSCSSRule.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMCSSRule.h" #include "nsIDOMCSSStyleSheet.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kICSSRuleIID, NS_IDOMCSSRULE_IID); static NS_DEFINE_IID(kICSSStyleSheetIID, NS_IDOMCSSSTYLESHEET_IID); -NS_DEF_PTR(nsIDOMCSSRule); -NS_DEF_PTR(nsIDOMCSSStyleSheet); - // // CSSRule property ids // @@ -71,18 +68,19 @@ GetCSSRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case CSSRULE_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSRULE_TYPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSRULE_TYPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRUint16 prop; nsresult result = NS_OK; @@ -91,16 +89,16 @@ GetCSSRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSSRULE_CSSTEXT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSRULE_CSSTEXT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSRULE_CSSTEXT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -109,35 +107,35 @@ GetCSSRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSSRULE_SHEET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSRULE_SHEET, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSRULE_SHEET, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMCSSStyleSheet* prop; nsresult result = NS_OK; result = a->GetSheet(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -158,18 +156,19 @@ SetCSSRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case CSSRULE_CSSTEXT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSRULE_CSSTEXT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSRULE_CSSTEXT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -179,11 +178,11 @@ SetCSSRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/css/nsJSCSSStyleDeclaration.cpp b/mozilla/dom/src/css/nsJSCSSStyleDeclaration.cpp index 1a9a7387947..6d530adc423 100644 --- a/mozilla/dom/src/css/nsJSCSSStyleDeclaration.cpp +++ b/mozilla/dom/src/css/nsJSCSSStyleDeclaration.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMCSSStyleDeclaration.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kICSSStyleDeclarationIID, NS_IDOMCSSSTYLEDECLARATION_IID); -NS_DEF_PTR(nsIDOMCSSStyleDeclaration); - // // CSSStyleDeclaration property ids // @@ -67,18 +65,19 @@ GetCSSStyleDeclarationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case CSSSTYLEDECLARATION_CSSTEXT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSSTYLEDECLARATION_CSSTEXT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSSTYLEDECLARATION_CSSTEXT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -87,16 +86,16 @@ GetCSSStyleDeclarationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSSSTYLEDECLARATION_LENGTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSSTYLEDECLARATION_LENGTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSSTYLEDECLARATION_LENGTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRUint32 prop; nsresult result = NS_OK; @@ -105,7 +104,7 @@ GetCSSStyleDeclarationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } @@ -118,13 +117,13 @@ GetCSSStyleDeclarationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -145,18 +144,19 @@ SetCSSStyleDeclarationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case CSSSTYLEDECLARATION_CSSTEXT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSSTYLEDECLARATION_CSSTEXT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSSTYLEDECLARATION_CSSTEXT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -166,11 +166,11 @@ SetCSSStyleDeclarationProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -217,37 +217,38 @@ CSSStyleDeclarationGetPropertyValue(JSContext *cx, JSObject *obj, uintN argc, js nsresult result = NS_OK; nsAutoString nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSSTYLEDECLARATION_GETPROPERTYVALUE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSSTYLEDECLARATION_GETPROPERTYVALUE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->GetPropertyValue(b0, nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } nsJSUtils::nsConvertStringToJSVal(nativeRet, cx, rval); @@ -267,37 +268,38 @@ CSSStyleDeclarationGetPropertyPriority(JSContext *cx, JSObject *obj, uintN argc, nsresult result = NS_OK; nsAutoString nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSSTYLEDECLARATION_GETPROPERTYPRIORITY, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSSTYLEDECLARATION_GETPROPERTYPRIORITY, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->GetPropertyPriority(b0, nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } nsJSUtils::nsConvertStringToJSVal(nativeRet, cx, rval); @@ -318,30 +320,31 @@ CSSStyleDeclarationSetProperty(JSContext *cx, JSObject *obj, uintN argc, jsval * nsAutoString b0; nsAutoString b1; nsAutoString b2; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSSTYLEDECLARATION_SETPROPERTY, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSSTYLEDECLARATION_SETPROPERTY, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 3) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); @@ -350,7 +353,7 @@ CSSStyleDeclarationSetProperty(JSContext *cx, JSObject *obj, uintN argc, jsval * result = nativeThis->SetProperty(b0, b1, b2); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -370,39 +373,40 @@ CSSStyleDeclarationItem(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, j nsresult result = NS_OK; nsAutoString nativeRet; PRUint32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSSTYLEDECLARATION_ITEM, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSSTYLEDECLARATION_ITEM, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->Item(b0, nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } nsJSUtils::nsConvertStringToJSVal(nativeRet, cx, rval); diff --git a/mozilla/dom/src/css/nsJSCSSStyleRule.cpp b/mozilla/dom/src/css/nsJSCSSStyleRule.cpp index 4e2f45ba580..8f34d96a898 100644 --- a/mozilla/dom/src/css/nsJSCSSStyleRule.cpp +++ b/mozilla/dom/src/css/nsJSCSSStyleRule.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMCSSStyleDeclaration.h" #include "nsIDOMCSSStyleRule.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kICSSStyleDeclarationIID, NS_IDOMCSSSTYLEDECLARATION_IID); static NS_DEFINE_IID(kICSSStyleRuleIID, NS_IDOMCSSSTYLERULE_IID); -NS_DEF_PTR(nsIDOMCSSStyleDeclaration); -NS_DEF_PTR(nsIDOMCSSStyleRule); - // // CSSStyleRule property ids // @@ -70,18 +67,19 @@ GetCSSStyleRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case CSSSTYLERULE_SELECTORTEXT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSSTYLERULE_SELECTORTEXT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSSTYLERULE_SELECTORTEXT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -90,35 +88,35 @@ GetCSSStyleRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSSSTYLERULE_STYLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSSTYLERULE_STYLE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSSTYLERULE_STYLE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMCSSStyleDeclaration* prop; nsresult result = NS_OK; result = a->GetStyle(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -139,18 +137,19 @@ SetCSSStyleRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case CSSSTYLERULE_SELECTORTEXT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSSTYLERULE_SELECTORTEXT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSSTYLERULE_SELECTORTEXT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -162,15 +161,15 @@ SetCSSStyleRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case CSSSTYLERULE_STYLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSSTYLERULE_STYLE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSSTYLERULE_STYLE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMCSSStyleDeclaration* prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&prop, kICSSStyleDeclarationIID, "CSSStyleDeclaration", cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } a->SetStyle(prop); @@ -178,11 +177,11 @@ SetCSSStyleRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/css/nsJSCSSStyleRuleCollection.cpp b/mozilla/dom/src/css/nsJSCSSStyleRuleCollection.cpp index 79675f469cf..ced6e1c61bd 100644 --- a/mozilla/dom/src/css/nsJSCSSStyleRuleCollection.cpp +++ b/mozilla/dom/src/css/nsJSCSSStyleRuleCollection.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMCSSStyleRule.h" #include "nsIDOMCSSStyleRuleCollection.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kICSSStyleRuleIID, NS_IDOMCSSSTYLERULE_IID); static NS_DEFINE_IID(kICSSStyleRuleCollectionIID, NS_IDOMCSSSTYLERULECOLLECTION_IID); -NS_DEF_PTR(nsIDOMCSSStyleRule); -NS_DEF_PTR(nsIDOMCSSStyleRuleCollection); - // // CSSStyleRuleCollection property ids // @@ -69,18 +66,19 @@ GetCSSStyleRuleCollectionProperty(JSContext *cx, JSObject *obj, jsval id, jsval } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case CSSSTYLERULECOLLECTION_LENGTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSSTYLERULECOLLECTION_LENGTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSSTYLERULECOLLECTION_LENGTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRUint32 prop; nsresult result = NS_OK; @@ -89,7 +87,7 @@ GetCSSStyleRuleCollectionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } @@ -100,16 +98,16 @@ GetCSSStyleRuleCollectionProperty(JSContext *cx, JSObject *obj, jsval id, jsval result = a->Item(JSVAL_TO_INT(id), &prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -130,19 +128,20 @@ SetCSSStyleRuleCollectionProperty(JSContext *cx, JSObject *obj, jsval id, jsval } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -189,42 +188,43 @@ CSSStyleRuleCollectionItem(JSContext *cx, JSObject *obj, uintN argc, jsval *argv nsresult result = NS_OK; nsIDOMCSSStyleRule* nativeRet; PRUint32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSSTYLERULECOLLECTION_ITEM, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSSTYLERULECOLLECTION_ITEM, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->Item(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; diff --git a/mozilla/dom/src/css/nsJSCSSStyleSheet.cpp b/mozilla/dom/src/css/nsJSCSSStyleSheet.cpp index 30f942e6e88..3edd83f11fc 100644 --- a/mozilla/dom/src/css/nsJSCSSStyleSheet.cpp +++ b/mozilla/dom/src/css/nsJSCSSStyleSheet.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMNode.h" #include "nsIDOMStyleSheet.h" @@ -48,11 +48,6 @@ static NS_DEFINE_IID(kIStyleSheetIID, NS_IDOMSTYLESHEET_IID); static NS_DEFINE_IID(kICSSStyleRuleCollectionIID, NS_IDOMCSSSTYLERULECOLLECTION_IID); static NS_DEFINE_IID(kICSSStyleSheetIID, NS_IDOMCSSSTYLESHEET_IID); -NS_DEF_PTR(nsIDOMNode); -NS_DEF_PTR(nsIDOMStyleSheet); -NS_DEF_PTR(nsIDOMCSSStyleRuleCollection); -NS_DEF_PTR(nsIDOMCSSStyleSheet); - // // CSSStyleSheet property ids // @@ -80,56 +75,57 @@ GetCSSStyleSheetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case CSSSTYLESHEET_OWNINGNODE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSSTYLESHEET_OWNINGNODE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSSTYLESHEET_OWNINGNODE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNode* prop; nsresult result = NS_OK; result = a->GetOwningNode(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSSSTYLESHEET_PARENTSTYLESHEET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSSTYLESHEET_PARENTSTYLESHEET, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSSTYLESHEET_PARENTSTYLESHEET, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMStyleSheet* prop; nsresult result = NS_OK; result = a->GetParentStyleSheet(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSSSTYLESHEET_HREF: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSSTYLESHEET_HREF, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSSTYLESHEET_HREF, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -138,16 +134,16 @@ GetCSSStyleSheetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSSSTYLESHEET_TITLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSSTYLESHEET_TITLE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSSTYLESHEET_TITLE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -156,16 +152,16 @@ GetCSSStyleSheetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSSSTYLESHEET_MEDIA: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSSTYLESHEET_MEDIA, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSSTYLESHEET_MEDIA, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -174,35 +170,35 @@ GetCSSStyleSheetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case CSSSTYLESHEET_CSSRULES: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSSTYLESHEET_CSSRULES, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSSTYLESHEET_CSSRULES, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMCSSStyleRuleCollection* prop; nsresult result = NS_OK; result = a->GetCssRules(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -223,19 +219,20 @@ SetCSSStyleSheetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -283,40 +280,41 @@ CSSStyleSheetInsertRule(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, j PRUint32 nativeRet; nsAutoString b0; PRUint32 b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSSTYLESHEET_INSERTRULE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSSTYLESHEET_INSERTRULE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); if (!JS_ValueToInt32(cx, argv[1], (int32 *)&b1)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->InsertRule(b0, b1, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = INT_TO_JSVAL(nativeRet); @@ -335,39 +333,40 @@ CSSStyleSheetDeleteRule(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, j nsIDOMCSSStyleSheet *nativeThis = (nsIDOMCSSStyleSheet*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; PRUint32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_CSSSTYLESHEET_DELETERULE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSSSTYLESHEET_DELETERULE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->DeleteRule(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; diff --git a/mozilla/dom/src/css/nsJSCSSUnknownRule.cpp b/mozilla/dom/src/css/nsJSCSSUnknownRule.cpp index 8e061c27f6d..28cf23d5350 100644 --- a/mozilla/dom/src/css/nsJSCSSUnknownRule.cpp +++ b/mozilla/dom/src/css/nsJSCSSUnknownRule.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMCSSUnknownRule.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kICSSUnknownRuleIID, NS_IDOMCSSUNKNOWNRULE_IID); -NS_DEF_PTR(nsIDOMCSSUnknownRule); - /***********************************************************************/ // @@ -60,19 +58,20 @@ GetCSSUnknownRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -93,19 +92,20 @@ SetCSSUnknownRuleProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/events/nsJSDOMEventListener.cpp b/mozilla/dom/src/events/nsJSDOMEventListener.cpp index 716946513b4..7faedc75b8d 100644 --- a/mozilla/dom/src/events/nsJSDOMEventListener.cpp +++ b/mozilla/dom/src/events/nsJSDOMEventListener.cpp @@ -23,6 +23,8 @@ #include "nsString.h" #include "nsIServiceManager.h" #include "nsIScriptSecurityManager.h" +#include "nsIScriptGlobalObject.h" +#include "nsJSUtils.h" #include "jsapi.h" static NS_DEFINE_IID(kIScriptEventListenerIID, NS_ISCRIPTEVENTLISTENER_IID); @@ -76,14 +78,20 @@ nsresult nsJSDOMEventListener::HandleEvent(nsIDOMEvent* aEvent) jsval argv[1]; JSObject *eventObj; - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(mContext); - if (NS_OK != NS_NewScriptKeyEvent(mScriptCX, aEvent, nsnull, (void**)&eventObj)) { + nsCOMPtr scriptCX; + nsJSUtils::nsGetStaticScriptContext(mContext, mTarget, + getter_AddRefs(scriptCX)); + if (!scriptCX) { + return NS_ERROR_FAILURE; + } + + if (NS_OK != NS_NewScriptKeyEvent(scriptCX, aEvent, nsnull, (void**)&eventObj)) { return NS_ERROR_FAILURE; } argv[0] = OBJECT_TO_JSVAL(eventObj); PRBool jsBoolResult; - if (NS_FAILED(mScriptCX->CallEventHandler(mTarget, mHandler, 1, argv, &jsBoolResult))) { + if (NS_FAILED(scriptCX->CallEventHandler(mTarget, mHandler, 1, argv, &jsBoolResult))) { return NS_ERROR_FAILURE; } return jsBoolResult ? NS_OK : NS_ERROR_FAILURE; diff --git a/mozilla/dom/src/events/nsJSEvent.cpp b/mozilla/dom/src/events/nsJSEvent.cpp index 2e55ebe67fd..5d786142dfc 100644 --- a/mozilla/dom/src/events/nsJSEvent.cpp +++ b/mozilla/dom/src/events/nsJSEvent.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMNode.h" #include "nsIDOMEvent.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kINodeIID, NS_IDOMNODE_IID); static NS_DEFINE_IID(kIEventIID, NS_IDOMEVENT_IID); -NS_DEF_PTR(nsIDOMNode); -NS_DEF_PTR(nsIDOMEvent); - // // Event property ids // @@ -74,18 +71,19 @@ GetEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case EVENT_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_EVENT_TYPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_EVENT_TYPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -94,54 +92,54 @@ GetEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case EVENT_TARGET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_EVENT_TARGET, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_EVENT_TARGET, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNode* prop; nsresult result = NS_OK; result = a->GetTarget(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case EVENT_CURRENTNODE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_EVENT_CURRENTNODE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_EVENT_CURRENTNODE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNode* prop; nsresult result = NS_OK; result = a->GetCurrentNode(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case EVENT_EVENTPHASE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_EVENT_EVENTPHASE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_EVENT_EVENTPHASE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRUint16 prop; nsresult result = NS_OK; @@ -150,16 +148,16 @@ GetEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case EVENT_BUBBLES: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_EVENT_BUBBLES, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_EVENT_BUBBLES, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -168,16 +166,16 @@ GetEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case EVENT_CANCELABLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_EVENT_CANCELABLE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_EVENT_CANCELABLE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -186,16 +184,16 @@ GetEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -216,19 +214,20 @@ SetEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -273,22 +272,6 @@ EventPreventBubble(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval { nsIDOMEvent *nativeThis = (nsIDOMEvent*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_EVENT_PREVENTBUBBLE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -296,9 +279,26 @@ EventPreventBubble(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_EVENT_PREVENTBUBBLE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->PreventBubble(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -316,22 +316,6 @@ EventPreventCapture(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval { nsIDOMEvent *nativeThis = (nsIDOMEvent*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_EVENT_PREVENTCAPTURE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -339,9 +323,26 @@ EventPreventCapture(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_EVENT_PREVENTCAPTURE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->PreventCapture(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -359,22 +360,6 @@ EventPreventDefault(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval { nsIDOMEvent *nativeThis = (nsIDOMEvent*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_EVENT_PREVENTDEFAULT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -382,9 +367,26 @@ EventPreventDefault(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_EVENT_PREVENTDEFAULT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->PreventDefault(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -405,43 +407,44 @@ EventInitEvent(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva nsAutoString b0; PRBool b1; PRBool b2; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_EVENT_INITEVENT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_EVENT_INITEVENT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 3) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); if (!nsJSUtils::nsConvertJSValToBool(&b1, cx, argv[1])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } if (!nsJSUtils::nsConvertJSValToBool(&b2, cx, argv[2])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } result = nativeThis->InitEvent(b0, b1, b2); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; diff --git a/mozilla/dom/src/events/nsJSKeyEvent.cpp b/mozilla/dom/src/events/nsJSKeyEvent.cpp index 928af2a6295..daca158637c 100644 --- a/mozilla/dom/src/events/nsJSKeyEvent.cpp +++ b/mozilla/dom/src/events/nsJSKeyEvent.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMMouseEvent.h" #include "nsIDOMKeyEvent.h" @@ -48,11 +48,6 @@ static NS_DEFINE_IID(kIKeyEventIID, NS_IDOMKEYEVENT_IID); static NS_DEFINE_IID(kIAbstractViewIID, NS_IDOMABSTRACTVIEW_IID); static NS_DEFINE_IID(kINodeIID, NS_IDOMNODE_IID); -NS_DEF_PTR(nsIDOMMouseEvent); -NS_DEF_PTR(nsIDOMKeyEvent); -NS_DEF_PTR(nsIDOMAbstractView); -NS_DEF_PTR(nsIDOMNode); - // // KeyEvent property ids // @@ -87,18 +82,19 @@ GetKeyEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case KEYEVENT_CHARCODE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_KEYEVENT_CHARCODE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_KEYEVENT_CHARCODE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRUint32 prop; nsresult result = NS_OK; @@ -107,16 +103,16 @@ GetKeyEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case KEYEVENT_KEYCODE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_KEYEVENT_KEYCODE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_KEYEVENT_KEYCODE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRUint32 prop; nsresult result = NS_OK; @@ -125,16 +121,16 @@ GetKeyEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case KEYEVENT_ALTKEY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_KEYEVENT_ALTKEY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_KEYEVENT_ALTKEY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -143,16 +139,16 @@ GetKeyEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case KEYEVENT_CTRLKEY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_KEYEVENT_CTRLKEY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_KEYEVENT_CTRLKEY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -161,16 +157,16 @@ GetKeyEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case KEYEVENT_SHIFTKEY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_KEYEVENT_SHIFTKEY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_KEYEVENT_SHIFTKEY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -179,16 +175,16 @@ GetKeyEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case KEYEVENT_METAKEY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_KEYEVENT_METAKEY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_KEYEVENT_METAKEY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -197,16 +193,16 @@ GetKeyEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case MOUSEEVENT_SCREENX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_MOUSEEVENT_SCREENX, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_MOUSEEVENT_SCREENX, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsIDOMMouseEvent* b; @@ -219,20 +215,20 @@ GetKeyEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } case MOUSEEVENT_SCREENY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_MOUSEEVENT_SCREENY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_MOUSEEVENT_SCREENY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsIDOMMouseEvent* b; @@ -245,20 +241,20 @@ GetKeyEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } case MOUSEEVENT_CLIENTX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_MOUSEEVENT_CLIENTX, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_MOUSEEVENT_CLIENTX, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsIDOMMouseEvent* b; @@ -271,20 +267,20 @@ GetKeyEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } case MOUSEEVENT_CLIENTY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_MOUSEEVENT_CLIENTY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_MOUSEEVENT_CLIENTY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsIDOMMouseEvent* b; @@ -297,20 +293,20 @@ GetKeyEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } case MOUSEEVENT_BUTTON: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_MOUSEEVENT_BUTTON, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_MOUSEEVENT_BUTTON, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRUint16 prop; nsIDOMMouseEvent* b; @@ -323,20 +319,20 @@ GetKeyEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } case MOUSEEVENT_CLICKCOUNT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_MOUSEEVENT_CLICKCOUNT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_MOUSEEVENT_CLICKCOUNT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRUint16 prop; nsIDOMMouseEvent* b; @@ -349,20 +345,20 @@ GetKeyEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } case MOUSEEVENT_RELATEDNODE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_MOUSEEVENT_RELATEDNODE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_MOUSEEVENT_RELATEDNODE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNode* prop; nsIDOMMouseEvent* b; @@ -371,25 +367,25 @@ GetKeyEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) result = b->GetRelatedNode(&prop); if(NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); NS_RELEASE(b); } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -410,19 +406,20 @@ SetKeyEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -476,69 +473,70 @@ KeyEventInitKeyEvent(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsva PRBool b6; PRUint32 b7; PRUint32 b8; - nsIDOMAbstractViewPtr b9; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_KEYEVENT_INITKEYEVENT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b9; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_KEYEVENT_INITKEYEVENT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 10) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); if (!nsJSUtils::nsConvertJSValToBool(&b1, cx, argv[1])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } if (!nsJSUtils::nsConvertJSValToBool(&b2, cx, argv[2])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } if (!nsJSUtils::nsConvertJSValToBool(&b3, cx, argv[3])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } if (!nsJSUtils::nsConvertJSValToBool(&b4, cx, argv[4])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } if (!nsJSUtils::nsConvertJSValToBool(&b5, cx, argv[5])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } if (!nsJSUtils::nsConvertJSValToBool(&b6, cx, argv[6])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } if (!JS_ValueToInt32(cx, argv[7], (int32 *)&b7)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } if (!JS_ValueToInt32(cx, argv[8], (int32 *)&b8)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b9, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b9), kIAbstractViewIID, "AbstractView", cx, argv[9])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->InitKeyEvent(b0, b1, b2, b3, b4, b5, b6, b7, b8, b9); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -555,10 +553,10 @@ PR_STATIC_CALLBACK(JSBool) MouseEventInitMouseEvent(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMKeyEvent *privateThis = (nsIDOMKeyEvent*)nsJSUtils::nsGetNativeThis(cx, obj); - nsIDOMMouseEventPtr nativeThis = nsnull; + nsCOMPtr nativeThis; nsresult result = NS_OK; - if (NS_OK != privateThis->QueryInterface(kIMouseEventIID, (void **)&nativeThis)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + if (NS_OK != privateThis->QueryInterface(kIMouseEventIID, getter_AddRefs(nativeThis))) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } nsAutoString b0; @@ -572,67 +570,68 @@ MouseEventInitMouseEvent(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, PRInt32 b8; PRUint32 b9; PRUint32 b10; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_MOUSEEVENT_INITMOUSEEVENT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore - if (nsnull == nativeThis) { + if (!nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_MOUSEEVENT_INITMOUSEEVENT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 11) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); if (!nsJSUtils::nsConvertJSValToBool(&b1, cx, argv[1])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } if (!nsJSUtils::nsConvertJSValToBool(&b2, cx, argv[2])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } if (!nsJSUtils::nsConvertJSValToBool(&b3, cx, argv[3])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } if (!nsJSUtils::nsConvertJSValToBool(&b4, cx, argv[4])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } if (!JS_ValueToInt32(cx, argv[5], (int32 *)&b5)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } if (!JS_ValueToInt32(cx, argv[6], (int32 *)&b6)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } if (!JS_ValueToInt32(cx, argv[7], (int32 *)&b7)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } if (!JS_ValueToInt32(cx, argv[8], (int32 *)&b8)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } if (!JS_ValueToInt32(cx, argv[9], (int32 *)&b9)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } if (!JS_ValueToInt32(cx, argv[10], (int32 *)&b10)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->InitMouseEvent(b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; diff --git a/mozilla/dom/src/events/nsJSUIEvent.cpp b/mozilla/dom/src/events/nsJSUIEvent.cpp index 6a90070fc2b..9d031b5f3fe 100644 --- a/mozilla/dom/src/events/nsJSUIEvent.cpp +++ b/mozilla/dom/src/events/nsJSUIEvent.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMAbstractView.h" #include "nsIDOMNSUIEvent.h" @@ -48,11 +48,6 @@ static NS_DEFINE_IID(kINSUIEventIID, NS_IDOMNSUIEVENT_IID); static NS_DEFINE_IID(kINodeIID, NS_IDOMNODE_IID); static NS_DEFINE_IID(kIUIEventIID, NS_IDOMUIEVENT_IID); -NS_DEF_PTR(nsIDOMAbstractView); -NS_DEF_PTR(nsIDOMNSUIEvent); -NS_DEF_PTR(nsIDOMNode); -NS_DEF_PTR(nsIDOMUIEvent); - // // UIEvent property ids // @@ -85,37 +80,38 @@ GetUIEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case UIEVENT_VIEW: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_UIEVENT_VIEW, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_UIEVENT_VIEW, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMAbstractView* prop; nsresult result = NS_OK; result = a->GetView(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case UIEVENT_DETAIL: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_UIEVENT_DETAIL, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_UIEVENT_DETAIL, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -124,16 +120,16 @@ GetUIEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case NSUIEVENT_LAYERX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSUIEVENT_LAYERX, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSUIEVENT_LAYERX, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsIDOMNSUIEvent* b; @@ -146,20 +142,20 @@ GetUIEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } case NSUIEVENT_LAYERY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSUIEVENT_LAYERY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSUIEVENT_LAYERY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsIDOMNSUIEvent* b; @@ -172,20 +168,20 @@ GetUIEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } case NSUIEVENT_PAGEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSUIEVENT_PAGEX, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSUIEVENT_PAGEX, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsIDOMNSUIEvent* b; @@ -198,20 +194,20 @@ GetUIEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } case NSUIEVENT_PAGEY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSUIEVENT_PAGEY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSUIEVENT_PAGEY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsIDOMNSUIEvent* b; @@ -224,20 +220,20 @@ GetUIEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } case NSUIEVENT_WHICH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSUIEVENT_WHICH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSUIEVENT_WHICH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRUint32 prop; nsIDOMNSUIEvent* b; @@ -250,20 +246,20 @@ GetUIEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } case NSUIEVENT_RANGEPARENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSUIEVENT_RANGEPARENT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSUIEVENT_RANGEPARENT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNode* prop; nsIDOMNSUIEvent* b; @@ -272,25 +268,25 @@ GetUIEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) result = b->GetRangeParent(&prop); if(NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); NS_RELEASE(b); } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } case NSUIEVENT_RANGEOFFSET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSUIEVENT_RANGEOFFSET, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSUIEVENT_RANGEOFFSET, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsIDOMNSUIEvent* b; @@ -303,20 +299,20 @@ GetUIEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } case NSUIEVENT_CANCELBUBBLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSUIEVENT_CANCELBUBBLE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSUIEVENT_CANCELBUBBLE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsIDOMNSUIEvent* b; @@ -329,20 +325,20 @@ GetUIEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } case NSUIEVENT_ISCHAR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSUIEVENT_ISCHAR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSUIEVENT_ISCHAR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsIDOMNSUIEvent* b; @@ -355,20 +351,20 @@ GetUIEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -389,22 +385,23 @@ SetUIEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case NSUIEVENT_CANCELBUBBLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSUIEVENT_CANCELBUBBLE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSUIEVENT_CANCELBUBBLE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } nsIDOMNSUIEvent *b; @@ -414,17 +411,17 @@ SetUIEventProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -472,55 +469,56 @@ UIEventInitUIEvent(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval nsAutoString b0; PRBool b1; PRBool b2; - nsIDOMAbstractViewPtr b3; + nsCOMPtr b3; PRInt32 b4; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_UIEVENT_INITUIEVENT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_UIEVENT_INITUIEVENT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 5) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); if (!nsJSUtils::nsConvertJSValToBool(&b1, cx, argv[1])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } if (!nsJSUtils::nsConvertJSValToBool(&b2, cx, argv[2])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b3, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b3), kIAbstractViewIID, "AbstractView", cx, argv[3])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } if (!JS_ValueToInt32(cx, argv[4], (int32 *)&b4)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->InitUIEvent(b0, b1, b2, b3, b4); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; diff --git a/mozilla/dom/src/html/nsJSHTMLAnchorElement.cpp b/mozilla/dom/src/html/nsJSHTMLAnchorElement.cpp index de3faa0f323..e9e46a96456 100644 --- a/mozilla/dom/src/html/nsJSHTMLAnchorElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLAnchorElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLAnchorElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLAnchorElementIID, NS_IDOMHTMLANCHORELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLAnchorElement); - // // HTMLAnchorElement property ids // @@ -77,18 +75,19 @@ GetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLANCHORELEMENT_ACCESSKEY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLANCHORELEMENT_ACCESSKEY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLANCHORELEMENT_ACCESSKEY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -97,16 +96,16 @@ GetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLANCHORELEMENT_CHARSET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLANCHORELEMENT_CHARSET, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLANCHORELEMENT_CHARSET, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -115,16 +114,16 @@ GetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLANCHORELEMENT_COORDS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLANCHORELEMENT_COORDS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLANCHORELEMENT_COORDS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -133,16 +132,16 @@ GetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLANCHORELEMENT_HREF: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLANCHORELEMENT_HREF, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLANCHORELEMENT_HREF, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -151,16 +150,16 @@ GetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLANCHORELEMENT_HREFLANG: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLANCHORELEMENT_HREFLANG, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLANCHORELEMENT_HREFLANG, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -169,16 +168,16 @@ GetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLANCHORELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLANCHORELEMENT_NAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLANCHORELEMENT_NAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -187,16 +186,16 @@ GetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLANCHORELEMENT_REL: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLANCHORELEMENT_REL, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLANCHORELEMENT_REL, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -205,16 +204,16 @@ GetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLANCHORELEMENT_REV: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLANCHORELEMENT_REV, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLANCHORELEMENT_REV, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -223,16 +222,16 @@ GetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLANCHORELEMENT_SHAPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLANCHORELEMENT_SHAPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLANCHORELEMENT_SHAPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -241,16 +240,16 @@ GetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLANCHORELEMENT_TABINDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLANCHORELEMENT_TABINDEX, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLANCHORELEMENT_TABINDEX, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -259,16 +258,16 @@ GetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLANCHORELEMENT_TARGET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLANCHORELEMENT_TARGET, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLANCHORELEMENT_TARGET, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -277,16 +276,16 @@ GetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLANCHORELEMENT_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLANCHORELEMENT_TYPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLANCHORELEMENT_TYPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -295,16 +294,16 @@ GetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -325,18 +324,19 @@ SetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLANCHORELEMENT_ACCESSKEY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLANCHORELEMENT_ACCESSKEY, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLANCHORELEMENT_ACCESSKEY, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -348,9 +348,9 @@ SetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLANCHORELEMENT_CHARSET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLANCHORELEMENT_CHARSET, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLANCHORELEMENT_CHARSET, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -362,9 +362,9 @@ SetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLANCHORELEMENT_COORDS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLANCHORELEMENT_COORDS, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLANCHORELEMENT_COORDS, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -376,9 +376,9 @@ SetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLANCHORELEMENT_HREF: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLANCHORELEMENT_HREF, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLANCHORELEMENT_HREF, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -390,9 +390,9 @@ SetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLANCHORELEMENT_HREFLANG: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLANCHORELEMENT_HREFLANG, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLANCHORELEMENT_HREFLANG, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -404,9 +404,9 @@ SetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLANCHORELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLANCHORELEMENT_NAME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLANCHORELEMENT_NAME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -418,9 +418,9 @@ SetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLANCHORELEMENT_REL: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLANCHORELEMENT_REL, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLANCHORELEMENT_REL, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -432,9 +432,9 @@ SetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLANCHORELEMENT_REV: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLANCHORELEMENT_REV, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLANCHORELEMENT_REV, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -446,9 +446,9 @@ SetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLANCHORELEMENT_SHAPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLANCHORELEMENT_SHAPE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLANCHORELEMENT_SHAPE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -460,9 +460,9 @@ SetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLANCHORELEMENT_TABINDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLANCHORELEMENT_TABINDEX, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLANCHORELEMENT_TABINDEX, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -470,7 +470,7 @@ SetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetTabIndex(prop); @@ -480,9 +480,9 @@ SetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLANCHORELEMENT_TARGET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLANCHORELEMENT_TARGET, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLANCHORELEMENT_TARGET, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -494,9 +494,9 @@ SetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLANCHORELEMENT_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLANCHORELEMENT_TYPE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLANCHORELEMENT_TYPE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -506,11 +506,11 @@ SetHTMLAnchorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -555,22 +555,6 @@ HTMLAnchorElementBlur(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsv { nsIDOMHTMLAnchorElement *nativeThis = (nsIDOMHTMLAnchorElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLANCHORELEMENT_BLUR, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -578,9 +562,26 @@ HTMLAnchorElementBlur(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsv { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLANCHORELEMENT_BLUR, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Blur(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -598,22 +599,6 @@ HTMLAnchorElementFocus(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, js { nsIDOMHTMLAnchorElement *nativeThis = (nsIDOMHTMLAnchorElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLANCHORELEMENT_FOCUS, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -621,9 +606,26 @@ HTMLAnchorElementFocus(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, js { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLANCHORELEMENT_FOCUS, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Focus(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; diff --git a/mozilla/dom/src/html/nsJSHTMLAppletElement.cpp b/mozilla/dom/src/html/nsJSHTMLAppletElement.cpp index a9a7ccafbbb..54228959493 100644 --- a/mozilla/dom/src/html/nsJSHTMLAppletElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLAppletElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLAppletElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLAppletElementIID, NS_IDOMHTMLAPPLETELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLAppletElement); - // // HTMLAppletElement property ids // @@ -76,18 +74,19 @@ GetHTMLAppletElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLAPPLETELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_ALIGN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_ALIGN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -96,16 +95,16 @@ GetHTMLAppletElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLAPPLETELEMENT_ALT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_ALT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_ALT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -114,16 +113,16 @@ GetHTMLAppletElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLAPPLETELEMENT_ARCHIVE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_ARCHIVE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_ARCHIVE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -132,16 +131,16 @@ GetHTMLAppletElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLAPPLETELEMENT_CODE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_CODE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_CODE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -150,16 +149,16 @@ GetHTMLAppletElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLAPPLETELEMENT_CODEBASE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_CODEBASE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_CODEBASE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -168,16 +167,16 @@ GetHTMLAppletElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLAPPLETELEMENT_HEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_HEIGHT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_HEIGHT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -186,16 +185,16 @@ GetHTMLAppletElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLAPPLETELEMENT_HSPACE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_HSPACE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_HSPACE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -204,16 +203,16 @@ GetHTMLAppletElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLAPPLETELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_NAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_NAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -222,16 +221,16 @@ GetHTMLAppletElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLAPPLETELEMENT_OBJECT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_OBJECT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_OBJECT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -240,16 +239,16 @@ GetHTMLAppletElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLAPPLETELEMENT_VSPACE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_VSPACE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_VSPACE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -258,16 +257,16 @@ GetHTMLAppletElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLAPPLETELEMENT_WIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_WIDTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_WIDTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -276,16 +275,16 @@ GetHTMLAppletElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -306,18 +305,19 @@ SetHTMLAppletElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLAPPLETELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_ALIGN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_ALIGN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -329,9 +329,9 @@ SetHTMLAppletElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLAPPLETELEMENT_ALT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_ALT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_ALT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -343,9 +343,9 @@ SetHTMLAppletElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLAPPLETELEMENT_ARCHIVE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_ARCHIVE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_ARCHIVE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -357,9 +357,9 @@ SetHTMLAppletElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLAPPLETELEMENT_CODE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_CODE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_CODE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -371,9 +371,9 @@ SetHTMLAppletElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLAPPLETELEMENT_CODEBASE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_CODEBASE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_CODEBASE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -385,9 +385,9 @@ SetHTMLAppletElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLAPPLETELEMENT_HEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_HEIGHT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_HEIGHT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -399,9 +399,9 @@ SetHTMLAppletElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLAPPLETELEMENT_HSPACE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_HSPACE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_HSPACE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -413,9 +413,9 @@ SetHTMLAppletElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLAPPLETELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_NAME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_NAME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -427,9 +427,9 @@ SetHTMLAppletElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLAPPLETELEMENT_OBJECT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_OBJECT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_OBJECT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -441,9 +441,9 @@ SetHTMLAppletElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLAPPLETELEMENT_VSPACE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_VSPACE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_VSPACE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -455,9 +455,9 @@ SetHTMLAppletElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLAPPLETELEMENT_WIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_WIDTH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAPPLETELEMENT_WIDTH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -467,11 +467,11 @@ SetHTMLAppletElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLAreaElement.cpp b/mozilla/dom/src/html/nsJSHTMLAreaElement.cpp index 1b69da85775..9ef2872615a 100644 --- a/mozilla/dom/src/html/nsJSHTMLAreaElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLAreaElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLAreaElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLAreaElementIID, NS_IDOMHTMLAREAELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLAreaElement); - // // HTMLAreaElement property ids // @@ -73,18 +71,19 @@ GetHTMLAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLAREAELEMENT_ACCESSKEY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAREAELEMENT_ACCESSKEY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAREAELEMENT_ACCESSKEY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -93,16 +92,16 @@ GetHTMLAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLAREAELEMENT_ALT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAREAELEMENT_ALT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAREAELEMENT_ALT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -111,16 +110,16 @@ GetHTMLAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLAREAELEMENT_COORDS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAREAELEMENT_COORDS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAREAELEMENT_COORDS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -129,16 +128,16 @@ GetHTMLAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLAREAELEMENT_HREF: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAREAELEMENT_HREF, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAREAELEMENT_HREF, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -147,16 +146,16 @@ GetHTMLAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLAREAELEMENT_NOHREF: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAREAELEMENT_NOHREF, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAREAELEMENT_NOHREF, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -165,16 +164,16 @@ GetHTMLAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLAREAELEMENT_SHAPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAREAELEMENT_SHAPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAREAELEMENT_SHAPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -183,16 +182,16 @@ GetHTMLAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLAREAELEMENT_TABINDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAREAELEMENT_TABINDEX, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAREAELEMENT_TABINDEX, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -201,16 +200,16 @@ GetHTMLAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLAREAELEMENT_TARGET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAREAELEMENT_TARGET, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAREAELEMENT_TARGET, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -219,16 +218,16 @@ GetHTMLAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -249,18 +248,19 @@ SetHTMLAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLAREAELEMENT_ACCESSKEY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAREAELEMENT_ACCESSKEY, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAREAELEMENT_ACCESSKEY, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -272,9 +272,9 @@ SetHTMLAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLAREAELEMENT_ALT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAREAELEMENT_ALT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAREAELEMENT_ALT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -286,9 +286,9 @@ SetHTMLAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLAREAELEMENT_COORDS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAREAELEMENT_COORDS, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAREAELEMENT_COORDS, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -300,9 +300,9 @@ SetHTMLAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLAREAELEMENT_HREF: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAREAELEMENT_HREF, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAREAELEMENT_HREF, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -314,13 +314,13 @@ SetHTMLAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLAREAELEMENT_NOHREF: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAREAELEMENT_NOHREF, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAREAELEMENT_NOHREF, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetNoHref(prop); @@ -330,9 +330,9 @@ SetHTMLAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLAREAELEMENT_SHAPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAREAELEMENT_SHAPE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAREAELEMENT_SHAPE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -344,9 +344,9 @@ SetHTMLAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLAREAELEMENT_TABINDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAREAELEMENT_TABINDEX, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAREAELEMENT_TABINDEX, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -354,7 +354,7 @@ SetHTMLAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetTabIndex(prop); @@ -364,9 +364,9 @@ SetHTMLAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLAREAELEMENT_TARGET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLAREAELEMENT_TARGET, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLAREAELEMENT_TARGET, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -376,11 +376,11 @@ SetHTMLAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLBRElement.cpp b/mozilla/dom/src/html/nsJSHTMLBRElement.cpp index 44d84001f1e..b83cc81f88d 100644 --- a/mozilla/dom/src/html/nsJSHTMLBRElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLBRElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLBRElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLBRElementIID, NS_IDOMHTMLBRELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLBRElement); - // // HTMLBRElement property ids // @@ -66,18 +64,19 @@ GetHTMLBRElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLBRELEMENT_CLEAR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBRELEMENT_CLEAR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBRELEMENT_CLEAR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -86,16 +85,16 @@ GetHTMLBRElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -116,18 +115,19 @@ SetHTMLBRElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLBRELEMENT_CLEAR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBRELEMENT_CLEAR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBRELEMENT_CLEAR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -137,11 +137,11 @@ SetHTMLBRElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLBaseElement.cpp b/mozilla/dom/src/html/nsJSHTMLBaseElement.cpp index 5ce167746f8..e517a2ca7c3 100644 --- a/mozilla/dom/src/html/nsJSHTMLBaseElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLBaseElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLBaseElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLBaseElementIID, NS_IDOMHTMLBASEELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLBaseElement); - // // HTMLBaseElement property ids // @@ -67,18 +65,19 @@ GetHTMLBaseElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLBASEELEMENT_HREF: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBASEELEMENT_HREF, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBASEELEMENT_HREF, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -87,16 +86,16 @@ GetHTMLBaseElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLBASEELEMENT_TARGET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBASEELEMENT_TARGET, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBASEELEMENT_TARGET, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -105,16 +104,16 @@ GetHTMLBaseElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -135,18 +134,19 @@ SetHTMLBaseElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLBASEELEMENT_HREF: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBASEELEMENT_HREF, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBASEELEMENT_HREF, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -158,9 +158,9 @@ SetHTMLBaseElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLBASEELEMENT_TARGET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBASEELEMENT_TARGET, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBASEELEMENT_TARGET, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -170,11 +170,11 @@ SetHTMLBaseElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLBaseFontElement.cpp b/mozilla/dom/src/html/nsJSHTMLBaseFontElement.cpp index 92e41428589..47f5108d176 100644 --- a/mozilla/dom/src/html/nsJSHTMLBaseFontElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLBaseFontElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLBaseFontElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLBaseFontElementIID, NS_IDOMHTMLBASEFONTELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLBaseFontElement); - // // HTMLBaseFontElement property ids // @@ -68,18 +66,19 @@ GetHTMLBaseFontElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLBASEFONTELEMENT_COLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBASEFONTELEMENT_COLOR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBASEFONTELEMENT_COLOR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -88,16 +87,16 @@ GetHTMLBaseFontElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLBASEFONTELEMENT_FACE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBASEFONTELEMENT_FACE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBASEFONTELEMENT_FACE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -106,16 +105,16 @@ GetHTMLBaseFontElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLBASEFONTELEMENT_SIZE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBASEFONTELEMENT_SIZE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBASEFONTELEMENT_SIZE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -124,16 +123,16 @@ GetHTMLBaseFontElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -154,18 +153,19 @@ SetHTMLBaseFontElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLBASEFONTELEMENT_COLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBASEFONTELEMENT_COLOR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBASEFONTELEMENT_COLOR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -177,9 +177,9 @@ SetHTMLBaseFontElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp case HTMLBASEFONTELEMENT_FACE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBASEFONTELEMENT_FACE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBASEFONTELEMENT_FACE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -191,9 +191,9 @@ SetHTMLBaseFontElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp case HTMLBASEFONTELEMENT_SIZE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBASEFONTELEMENT_SIZE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBASEFONTELEMENT_SIZE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -203,11 +203,11 @@ SetHTMLBaseFontElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLBodyElement.cpp b/mozilla/dom/src/html/nsJSHTMLBodyElement.cpp index 96299ca5fba..e3da2b22446 100644 --- a/mozilla/dom/src/html/nsJSHTMLBodyElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLBodyElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLBodyElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLBodyElementIID, NS_IDOMHTMLBODYELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLBodyElement); - // // HTMLBodyElement property ids // @@ -71,18 +69,19 @@ GetHTMLBodyElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLBODYELEMENT_ALINK: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBODYELEMENT_ALINK, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBODYELEMENT_ALINK, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -91,16 +90,16 @@ GetHTMLBodyElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLBODYELEMENT_BACKGROUND: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBODYELEMENT_BACKGROUND, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBODYELEMENT_BACKGROUND, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -109,16 +108,16 @@ GetHTMLBodyElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLBODYELEMENT_BGCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBODYELEMENT_BGCOLOR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBODYELEMENT_BGCOLOR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -127,16 +126,16 @@ GetHTMLBodyElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLBODYELEMENT_LINK: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBODYELEMENT_LINK, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBODYELEMENT_LINK, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -145,16 +144,16 @@ GetHTMLBodyElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLBODYELEMENT_TEXT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBODYELEMENT_TEXT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBODYELEMENT_TEXT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -163,16 +162,16 @@ GetHTMLBodyElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLBODYELEMENT_VLINK: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBODYELEMENT_VLINK, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBODYELEMENT_VLINK, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -181,16 +180,16 @@ GetHTMLBodyElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -211,18 +210,19 @@ SetHTMLBodyElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLBODYELEMENT_ALINK: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBODYELEMENT_ALINK, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBODYELEMENT_ALINK, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -234,9 +234,9 @@ SetHTMLBodyElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLBODYELEMENT_BACKGROUND: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBODYELEMENT_BACKGROUND, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBODYELEMENT_BACKGROUND, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -248,9 +248,9 @@ SetHTMLBodyElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLBODYELEMENT_BGCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBODYELEMENT_BGCOLOR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBODYELEMENT_BGCOLOR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -262,9 +262,9 @@ SetHTMLBodyElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLBODYELEMENT_LINK: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBODYELEMENT_LINK, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBODYELEMENT_LINK, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -276,9 +276,9 @@ SetHTMLBodyElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLBODYELEMENT_TEXT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBODYELEMENT_TEXT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBODYELEMENT_TEXT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -290,9 +290,9 @@ SetHTMLBodyElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLBODYELEMENT_VLINK: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBODYELEMENT_VLINK, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBODYELEMENT_VLINK, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -302,11 +302,11 @@ SetHTMLBodyElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLButtonElement.cpp b/mozilla/dom/src/html/nsJSHTMLButtonElement.cpp index c584b1b5330..41754369d6e 100644 --- a/mozilla/dom/src/html/nsJSHTMLButtonElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLButtonElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMNSHTMLButtonElement.h" #include "nsIDOMHTMLFormElement.h" @@ -46,10 +46,6 @@ static NS_DEFINE_IID(kINSHTMLButtonElementIID, NS_IDOMNSHTMLBUTTONELEMENT_IID); static NS_DEFINE_IID(kIHTMLFormElementIID, NS_IDOMHTMLFORMELEMENT_IID); static NS_DEFINE_IID(kIHTMLButtonElementIID, NS_IDOMHTMLBUTTONELEMENT_IID); -NS_DEF_PTR(nsIDOMNSHTMLButtonElement); -NS_DEF_PTR(nsIDOMHTMLFormElement); -NS_DEF_PTR(nsIDOMHTMLButtonElement); - // // HTMLButtonElement property ids // @@ -78,37 +74,38 @@ GetHTMLButtonElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLBUTTONELEMENT_FORM: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBUTTONELEMENT_FORM, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBUTTONELEMENT_FORM, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLFormElement* prop; nsresult result = NS_OK; result = a->GetForm(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLBUTTONELEMENT_ACCESSKEY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBUTTONELEMENT_ACCESSKEY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBUTTONELEMENT_ACCESSKEY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -117,16 +114,16 @@ GetHTMLButtonElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLBUTTONELEMENT_DISABLED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBUTTONELEMENT_DISABLED, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBUTTONELEMENT_DISABLED, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -135,16 +132,16 @@ GetHTMLButtonElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLBUTTONELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBUTTONELEMENT_NAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBUTTONELEMENT_NAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -153,16 +150,16 @@ GetHTMLButtonElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLBUTTONELEMENT_TABINDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBUTTONELEMENT_TABINDEX, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBUTTONELEMENT_TABINDEX, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -171,16 +168,16 @@ GetHTMLButtonElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLBUTTONELEMENT_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBUTTONELEMENT_TYPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBUTTONELEMENT_TYPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -189,16 +186,16 @@ GetHTMLButtonElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLBUTTONELEMENT_VALUE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBUTTONELEMENT_VALUE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBUTTONELEMENT_VALUE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -207,16 +204,16 @@ GetHTMLButtonElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -237,18 +234,19 @@ SetHTMLButtonElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLBUTTONELEMENT_ACCESSKEY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBUTTONELEMENT_ACCESSKEY, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBUTTONELEMENT_ACCESSKEY, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -260,13 +258,13 @@ SetHTMLButtonElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLBUTTONELEMENT_DISABLED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBUTTONELEMENT_DISABLED, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBUTTONELEMENT_DISABLED, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetDisabled(prop); @@ -276,9 +274,9 @@ SetHTMLButtonElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLBUTTONELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBUTTONELEMENT_NAME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBUTTONELEMENT_NAME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -290,9 +288,9 @@ SetHTMLButtonElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLBUTTONELEMENT_TABINDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBUTTONELEMENT_TABINDEX, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBUTTONELEMENT_TABINDEX, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -300,7 +298,7 @@ SetHTMLButtonElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetTabIndex(prop); @@ -310,9 +308,9 @@ SetHTMLButtonElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLBUTTONELEMENT_VALUE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLBUTTONELEMENT_VALUE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLBUTTONELEMENT_VALUE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -322,11 +320,11 @@ SetHTMLButtonElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -370,38 +368,39 @@ PR_STATIC_CALLBACK(JSBool) NSHTMLButtonElementBlur(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMHTMLButtonElement *privateThis = (nsIDOMHTMLButtonElement*)nsJSUtils::nsGetNativeThis(cx, obj); - nsIDOMNSHTMLButtonElementPtr nativeThis = nsnull; + nsCOMPtr nativeThis; nsresult result = NS_OK; - if (NS_OK != privateThis->QueryInterface(kINSHTMLButtonElementIID, (void **)&nativeThis)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); - } - - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLBUTTONELEMENT_BLUR, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } + if (NS_OK != privateThis->QueryInterface(kINSHTMLButtonElementIID, getter_AddRefs(nativeThis))) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } // If there's no private data, this must be the prototype, so ignore - if (nsnull == nativeThis) { + if (!nativeThis) { return JS_TRUE; } { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLBUTTONELEMENT_BLUR, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Blur(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -418,38 +417,39 @@ PR_STATIC_CALLBACK(JSBool) NSHTMLButtonElementFocus(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMHTMLButtonElement *privateThis = (nsIDOMHTMLButtonElement*)nsJSUtils::nsGetNativeThis(cx, obj); - nsIDOMNSHTMLButtonElementPtr nativeThis = nsnull; + nsCOMPtr nativeThis; nsresult result = NS_OK; - if (NS_OK != privateThis->QueryInterface(kINSHTMLButtonElementIID, (void **)&nativeThis)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); - } - - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLBUTTONELEMENT_FOCUS, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } + if (NS_OK != privateThis->QueryInterface(kINSHTMLButtonElementIID, getter_AddRefs(nativeThis))) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } // If there's no private data, this must be the prototype, so ignore - if (nsnull == nativeThis) { + if (!nativeThis) { return JS_TRUE; } { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLBUTTONELEMENT_FOCUS, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Focus(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; diff --git a/mozilla/dom/src/html/nsJSHTMLCollection.cpp b/mozilla/dom/src/html/nsJSHTMLCollection.cpp index d33142172b0..cdf991a2935 100644 --- a/mozilla/dom/src/html/nsJSHTMLCollection.cpp +++ b/mozilla/dom/src/html/nsJSHTMLCollection.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMNode.h" #include "nsIDOMHTMLCollection.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kINodeIID, NS_IDOMNODE_IID); static NS_DEFINE_IID(kIHTMLCollectionIID, NS_IDOMHTMLCOLLECTION_IID); -NS_DEF_PTR(nsIDOMNode); -NS_DEF_PTR(nsIDOMHTMLCollection); - // // HTMLCollection property ids // @@ -70,19 +67,20 @@ GetHTMLCollectionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) PRBool checkNamedItem = PR_TRUE; if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } checkNamedItem = PR_FALSE; switch(JSVAL_TO_INT(id)) { case HTMLCOLLECTION_LENGTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLCOLLECTION_LENGTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLCOLLECTION_LENGTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRUint32 prop; nsresult result = NS_OK; @@ -91,7 +89,7 @@ GetHTMLCollectionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } @@ -102,10 +100,10 @@ GetHTMLCollectionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) result = a->Item(JSVAL_TO_INT(id), &prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } } @@ -128,18 +126,18 @@ GetHTMLCollectionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) if (NS_SUCCEEDED(result)) { if (NULL != prop) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -161,20 +159,21 @@ SetHTMLCollectionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) PRBool checkNamedItem = PR_TRUE; if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } checkNamedItem = PR_FALSE; switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -221,42 +220,43 @@ HTMLCollectionItem(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval nsresult result = NS_OK; nsIDOMNode* nativeRet; PRUint32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLCOLLECTION_ITEM, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLCOLLECTION_ITEM, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->Item(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -273,40 +273,41 @@ HTMLCollectionNamedItem(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, j nsresult result = NS_OK; nsIDOMNode* nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLCOLLECTION_NAMEDITEM, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLCOLLECTION_NAMEDITEM, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->NamedItem(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLDListElement.cpp b/mozilla/dom/src/html/nsJSHTMLDListElement.cpp index 06899eb0ec5..76ef3da5208 100644 --- a/mozilla/dom/src/html/nsJSHTMLDListElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLDListElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLDListElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLDListElementIID, NS_IDOMHTMLDLISTELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLDListElement); - // // HTMLDListElement property ids // @@ -66,18 +64,19 @@ GetHTMLDListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLDLISTELEMENT_COMPACT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLDLISTELEMENT_COMPACT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLDLISTELEMENT_COMPACT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -86,16 +85,16 @@ GetHTMLDListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -116,22 +115,23 @@ SetHTMLDListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLDLISTELEMENT_COMPACT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLDLISTELEMENT_COMPACT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLDLISTELEMENT_COMPACT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetCompact(prop); @@ -139,11 +139,11 @@ SetHTMLDListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLDirectoryElement.cpp b/mozilla/dom/src/html/nsJSHTMLDirectoryElement.cpp index af7b8e116ba..689bf293bca 100644 --- a/mozilla/dom/src/html/nsJSHTMLDirectoryElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLDirectoryElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLDirectoryElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLDirectoryElementIID, NS_IDOMHTMLDIRECTORYELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLDirectoryElement); - // // HTMLDirectoryElement property ids // @@ -66,18 +64,19 @@ GetHTMLDirectoryElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLDIRECTORYELEMENT_COMPACT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLDIRECTORYELEMENT_COMPACT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLDIRECTORYELEMENT_COMPACT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -86,16 +85,16 @@ GetHTMLDirectoryElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -116,22 +115,23 @@ SetHTMLDirectoryElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLDIRECTORYELEMENT_COMPACT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLDIRECTORYELEMENT_COMPACT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLDIRECTORYELEMENT_COMPACT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetCompact(prop); @@ -139,11 +139,11 @@ SetHTMLDirectoryElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLDivElement.cpp b/mozilla/dom/src/html/nsJSHTMLDivElement.cpp index afcbe6a655a..0fb33942130 100644 --- a/mozilla/dom/src/html/nsJSHTMLDivElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLDivElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLDivElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLDivElementIID, NS_IDOMHTMLDIVELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLDivElement); - // // HTMLDivElement property ids // @@ -66,18 +64,19 @@ GetHTMLDivElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLDIVELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLDIVELEMENT_ALIGN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLDIVELEMENT_ALIGN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -86,16 +85,16 @@ GetHTMLDivElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -116,18 +115,19 @@ SetHTMLDivElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLDIVELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLDIVELEMENT_ALIGN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLDIVELEMENT_ALIGN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -137,11 +137,11 @@ SetHTMLDivElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLDocument.cpp b/mozilla/dom/src/html/nsJSHTMLDocument.cpp index acae550e3bf..633a6ebf0e4 100644 --- a/mozilla/dom/src/html/nsJSHTMLDocument.cpp +++ b/mozilla/dom/src/html/nsJSHTMLDocument.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMElement.h" #include "nsIDOMHTMLElement.h" @@ -54,14 +54,6 @@ static NS_DEFINE_IID(kIEventIID, NS_IDOMEVENT_IID); static NS_DEFINE_IID(kIHTMLCollectionIID, NS_IDOMHTMLCOLLECTION_IID); static NS_DEFINE_IID(kINodeListIID, NS_IDOMNODELIST_IID); -NS_DEF_PTR(nsIDOMElement); -NS_DEF_PTR(nsIDOMHTMLElement); -NS_DEF_PTR(nsIDOMHTMLDocument); -NS_DEF_PTR(nsIDOMNSHTMLDocument); -NS_DEF_PTR(nsIDOMEvent); -NS_DEF_PTR(nsIDOMHTMLCollection); -NS_DEF_PTR(nsIDOMNodeList); - // // HTMLDocument property ids // @@ -104,19 +96,20 @@ GetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) PRBool checkNamedItem = PR_TRUE; if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } checkNamedItem = PR_FALSE; switch(JSVAL_TO_INT(id)) { case HTMLDOCUMENT_TITLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLDOCUMENT_TITLE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLDOCUMENT_TITLE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -125,16 +118,16 @@ GetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLDOCUMENT_REFERRER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLDOCUMENT_REFERRER, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLDOCUMENT_REFERRER, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -143,16 +136,16 @@ GetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLDOCUMENT_DOMAIN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLDOCUMENT_DOMAIN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLDOCUMENT_DOMAIN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -161,16 +154,16 @@ GetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLDOCUMENT_URL: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLDOCUMENT_URL, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLDOCUMENT_URL, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -179,130 +172,130 @@ GetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLDOCUMENT_BODY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLDOCUMENT_BODY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLDOCUMENT_BODY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLElement* prop; nsresult result = NS_OK; result = a->GetBody(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLDOCUMENT_IMAGES: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLDOCUMENT_IMAGES, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLDOCUMENT_IMAGES, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLCollection* prop; nsresult result = NS_OK; result = a->GetImages(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLDOCUMENT_APPLETS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLDOCUMENT_APPLETS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLDOCUMENT_APPLETS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLCollection* prop; nsresult result = NS_OK; result = a->GetApplets(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLDOCUMENT_LINKS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLDOCUMENT_LINKS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLDOCUMENT_LINKS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLCollection* prop; nsresult result = NS_OK; result = a->GetLinks(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLDOCUMENT_FORMS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLDOCUMENT_FORMS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLDOCUMENT_FORMS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLCollection* prop; nsresult result = NS_OK; result = a->GetForms(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLDOCUMENT_ANCHORS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLDOCUMENT_ANCHORS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLDOCUMENT_ANCHORS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLCollection* prop; nsresult result = NS_OK; result = a->GetAnchors(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLDOCUMENT_COOKIE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLDOCUMENT_COOKIE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLDOCUMENT_COOKIE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -311,16 +304,16 @@ GetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case NSHTMLDOCUMENT_ALINKCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLDOCUMENT_ALINKCOLOR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLDOCUMENT_ALINKCOLOR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsIDOMNSHTMLDocument* b; @@ -333,20 +326,20 @@ GetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } case NSHTMLDOCUMENT_LINKCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLDOCUMENT_LINKCOLOR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLDOCUMENT_LINKCOLOR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsIDOMNSHTMLDocument* b; @@ -359,20 +352,20 @@ GetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } case NSHTMLDOCUMENT_VLINKCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLDOCUMENT_VLINKCOLOR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLDOCUMENT_VLINKCOLOR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsIDOMNSHTMLDocument* b; @@ -385,20 +378,20 @@ GetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } case NSHTMLDOCUMENT_BGCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLDOCUMENT_BGCOLOR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLDOCUMENT_BGCOLOR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsIDOMNSHTMLDocument* b; @@ -411,20 +404,20 @@ GetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } case NSHTMLDOCUMENT_FGCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLDOCUMENT_FGCOLOR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLDOCUMENT_FGCOLOR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsIDOMNSHTMLDocument* b; @@ -437,20 +430,20 @@ GetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } case NSHTMLDOCUMENT_LASTMODIFIED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLDOCUMENT_LASTMODIFIED, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLDOCUMENT_LASTMODIFIED, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsIDOMNSHTMLDocument* b; @@ -463,20 +456,20 @@ GetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } case NSHTMLDOCUMENT_EMBEDS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLDOCUMENT_EMBEDS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLDOCUMENT_EMBEDS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLCollection* prop; nsIDOMNSHTMLDocument* b; @@ -485,25 +478,25 @@ GetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) result = b->GetEmbeds(&prop); if(NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); NS_RELEASE(b); } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } case NSHTMLDOCUMENT_LAYERS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLDOCUMENT_LAYERS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLDOCUMENT_LAYERS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLCollection* prop; nsIDOMNSHTMLDocument* b; @@ -512,25 +505,25 @@ GetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) result = b->GetLayers(&prop); if(NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); NS_RELEASE(b); } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } case NSHTMLDOCUMENT_PLUGINS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLDOCUMENT_PLUGINS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLDOCUMENT_PLUGINS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLCollection* prop; nsIDOMNSHTMLDocument* b; @@ -539,16 +532,16 @@ GetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) result = b->GetPlugins(&prop); if(NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); NS_RELEASE(b); } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } @@ -577,23 +570,23 @@ GetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) NS_RELEASE(b); if (NULL != prop) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -615,19 +608,20 @@ SetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) PRBool checkNamedItem = PR_TRUE; if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } checkNamedItem = PR_FALSE; switch(JSVAL_TO_INT(id)) { case HTMLDOCUMENT_TITLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLDOCUMENT_TITLE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLDOCUMENT_TITLE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -639,9 +633,9 @@ SetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLDOCUMENT_DOMAIN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLDOCUMENT_DOMAIN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLDOCUMENT_DOMAIN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -653,15 +647,15 @@ SetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLDOCUMENT_BODY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLDOCUMENT_BODY, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLDOCUMENT_BODY, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLElement* prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&prop, kIHTMLElementIID, "HTMLElement", cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } a->SetBody(prop); @@ -671,9 +665,9 @@ SetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLDOCUMENT_COOKIE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLDOCUMENT_COOKIE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLDOCUMENT_COOKIE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -685,9 +679,9 @@ SetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case NSHTMLDOCUMENT_ALINKCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLDOCUMENT_ALINKCOLOR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLDOCUMENT_ALINKCOLOR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -699,7 +693,7 @@ SetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; @@ -707,9 +701,9 @@ SetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case NSHTMLDOCUMENT_LINKCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLDOCUMENT_LINKCOLOR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLDOCUMENT_LINKCOLOR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -721,7 +715,7 @@ SetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; @@ -729,9 +723,9 @@ SetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case NSHTMLDOCUMENT_VLINKCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLDOCUMENT_VLINKCOLOR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLDOCUMENT_VLINKCOLOR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -743,7 +737,7 @@ SetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; @@ -751,9 +745,9 @@ SetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case NSHTMLDOCUMENT_BGCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLDOCUMENT_BGCOLOR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLDOCUMENT_BGCOLOR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -765,7 +759,7 @@ SetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; @@ -773,9 +767,9 @@ SetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case NSHTMLDOCUMENT_FGCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLDOCUMENT_FGCOLOR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLDOCUMENT_FGCOLOR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -787,17 +781,17 @@ SetHTMLDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -842,22 +836,6 @@ HTMLDocumentClose(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval * { nsIDOMHTMLDocument *nativeThis = (nsIDOMHTMLDocument*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLDOCUMENT_CLOSE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -865,9 +843,26 @@ HTMLDocumentClose(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval * { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLDOCUMENT_CLOSE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Close(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -887,40 +882,41 @@ HTMLDocumentGetElementById(JSContext *cx, JSObject *obj, uintN argc, jsval *argv nsresult result = NS_OK; nsIDOMElement* nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLDOCUMENT_GETELEMENTBYID, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLDOCUMENT_GETELEMENTBYID, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->GetElementById(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -937,40 +933,41 @@ HTMLDocumentGetElementsByName(JSContext *cx, JSObject *obj, uintN argc, jsval *a nsresult result = NS_OK; nsIDOMNodeList* nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLDOCUMENT_GETELEMENTSBYNAME, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLDOCUMENT_GETELEMENTSBYNAME, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->GetElementsByName(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -984,39 +981,40 @@ PR_STATIC_CALLBACK(JSBool) NSHTMLDocumentGetSelection(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMHTMLDocument *privateThis = (nsIDOMHTMLDocument*)nsJSUtils::nsGetNativeThis(cx, obj); - nsIDOMNSHTMLDocumentPtr nativeThis = nsnull; + nsCOMPtr nativeThis; nsresult result = NS_OK; - if (NS_OK != privateThis->QueryInterface(kINSHTMLDocumentIID, (void **)&nativeThis)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + if (NS_OK != privateThis->QueryInterface(kINSHTMLDocumentIID, getter_AddRefs(nativeThis))) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } nsAutoString nativeRet; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLDOCUMENT_GETSELECTION, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore - if (nsnull == nativeThis) { + if (!nativeThis) { return JS_TRUE; } { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLDOCUMENT_GETSELECTION, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->GetSelection(nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } nsJSUtils::nsConvertStringToJSVal(nativeRet, cx, rval); @@ -1033,48 +1031,49 @@ PR_STATIC_CALLBACK(JSBool) NSHTMLDocumentNamedItem(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMHTMLDocument *privateThis = (nsIDOMHTMLDocument*)nsJSUtils::nsGetNativeThis(cx, obj); - nsIDOMNSHTMLDocumentPtr nativeThis = nsnull; + nsCOMPtr nativeThis; nsresult result = NS_OK; - if (NS_OK != privateThis->QueryInterface(kINSHTMLDocumentIID, (void **)&nativeThis)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + if (NS_OK != privateThis->QueryInterface(kINSHTMLDocumentIID, getter_AddRefs(nativeThis))) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } nsIDOMElement* nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLDOCUMENT_NAMEDITEM, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore - if (nsnull == nativeThis) { + if (!nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLDOCUMENT_NAMEDITEM, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->NamedItem(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -1088,38 +1087,39 @@ PR_STATIC_CALLBACK(JSBool) NSHTMLDocumentOpen(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMHTMLDocument *privateThis = (nsIDOMHTMLDocument*)nsJSUtils::nsGetNativeThis(cx, obj); - nsIDOMNSHTMLDocumentPtr nativeThis = nsnull; + nsCOMPtr nativeThis; nsresult result = NS_OK; - if (NS_OK != privateThis->QueryInterface(kINSHTMLDocumentIID, (void **)&nativeThis)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); - } - - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLDOCUMENT_OPEN, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } + if (NS_OK != privateThis->QueryInterface(kINSHTMLDocumentIID, getter_AddRefs(nativeThis))) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } // If there's no private data, this must be the prototype, so ignore - if (nsnull == nativeThis) { + if (!nativeThis) { return JS_TRUE; } { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLDOCUMENT_OPEN, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Open(cx, argv+0, argc-0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -1136,38 +1136,39 @@ PR_STATIC_CALLBACK(JSBool) NSHTMLDocumentWrite(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMHTMLDocument *privateThis = (nsIDOMHTMLDocument*)nsJSUtils::nsGetNativeThis(cx, obj); - nsIDOMNSHTMLDocumentPtr nativeThis = nsnull; + nsCOMPtr nativeThis; nsresult result = NS_OK; - if (NS_OK != privateThis->QueryInterface(kINSHTMLDocumentIID, (void **)&nativeThis)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); - } - - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLDOCUMENT_WRITE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } + if (NS_OK != privateThis->QueryInterface(kINSHTMLDocumentIID, getter_AddRefs(nativeThis))) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } // If there's no private data, this must be the prototype, so ignore - if (nsnull == nativeThis) { + if (!nativeThis) { return JS_TRUE; } { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLDOCUMENT_WRITE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Write(cx, argv+0, argc-0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -1184,38 +1185,39 @@ PR_STATIC_CALLBACK(JSBool) NSHTMLDocumentWriteln(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMHTMLDocument *privateThis = (nsIDOMHTMLDocument*)nsJSUtils::nsGetNativeThis(cx, obj); - nsIDOMNSHTMLDocumentPtr nativeThis = nsnull; + nsCOMPtr nativeThis; nsresult result = NS_OK; - if (NS_OK != privateThis->QueryInterface(kINSHTMLDocumentIID, (void **)&nativeThis)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); - } - - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLDOCUMENT_WRITELN, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } + if (NS_OK != privateThis->QueryInterface(kINSHTMLDocumentIID, getter_AddRefs(nativeThis))) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } // If there's no private data, this must be the prototype, so ignore - if (nsnull == nativeThis) { + if (!nativeThis) { return JS_TRUE; } { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLDOCUMENT_WRITELN, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Writeln(cx, argv+0, argc-0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -1232,38 +1234,39 @@ PR_STATIC_CALLBACK(JSBool) NSHTMLDocumentClear(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMHTMLDocument *privateThis = (nsIDOMHTMLDocument*)nsJSUtils::nsGetNativeThis(cx, obj); - nsIDOMNSHTMLDocumentPtr nativeThis = nsnull; + nsCOMPtr nativeThis; nsresult result = NS_OK; - if (NS_OK != privateThis->QueryInterface(kINSHTMLDocumentIID, (void **)&nativeThis)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); - } - - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLDOCUMENT_CLEAR, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } + if (NS_OK != privateThis->QueryInterface(kINSHTMLDocumentIID, getter_AddRefs(nativeThis))) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } // If there's no private data, this must be the prototype, so ignore - if (nsnull == nativeThis) { + if (!nativeThis) { return JS_TRUE; } { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLDOCUMENT_CLEAR, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Clear(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -1280,46 +1283,47 @@ PR_STATIC_CALLBACK(JSBool) NSHTMLDocumentCaptureEvents(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMHTMLDocument *privateThis = (nsIDOMHTMLDocument*)nsJSUtils::nsGetNativeThis(cx, obj); - nsIDOMNSHTMLDocumentPtr nativeThis = nsnull; + nsCOMPtr nativeThis; nsresult result = NS_OK; - if (NS_OK != privateThis->QueryInterface(kINSHTMLDocumentIID, (void **)&nativeThis)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + if (NS_OK != privateThis->QueryInterface(kINSHTMLDocumentIID, getter_AddRefs(nativeThis))) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } PRInt32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLDOCUMENT_CAPTUREEVENTS, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore - if (nsnull == nativeThis) { + if (!nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLDOCUMENT_CAPTUREEVENTS, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->CaptureEvents(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -1336,46 +1340,47 @@ PR_STATIC_CALLBACK(JSBool) NSHTMLDocumentReleaseEvents(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMHTMLDocument *privateThis = (nsIDOMHTMLDocument*)nsJSUtils::nsGetNativeThis(cx, obj); - nsIDOMNSHTMLDocumentPtr nativeThis = nsnull; + nsCOMPtr nativeThis; nsresult result = NS_OK; - if (NS_OK != privateThis->QueryInterface(kINSHTMLDocumentIID, (void **)&nativeThis)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + if (NS_OK != privateThis->QueryInterface(kINSHTMLDocumentIID, getter_AddRefs(nativeThis))) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } PRInt32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLDOCUMENT_RELEASEEVENTS, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore - if (nsnull == nativeThis) { + if (!nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLDOCUMENT_RELEASEEVENTS, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->ReleaseEvents(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -1392,50 +1397,51 @@ PR_STATIC_CALLBACK(JSBool) NSHTMLDocumentRouteEvent(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMHTMLDocument *privateThis = (nsIDOMHTMLDocument*)nsJSUtils::nsGetNativeThis(cx, obj); - nsIDOMNSHTMLDocumentPtr nativeThis = nsnull; + nsCOMPtr nativeThis; nsresult result = NS_OK; - if (NS_OK != privateThis->QueryInterface(kINSHTMLDocumentIID, (void **)&nativeThis)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); - } - - nsIDOMEventPtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLDOCUMENT_ROUTEEVENT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } + if (NS_OK != privateThis->QueryInterface(kINSHTMLDocumentIID, getter_AddRefs(nativeThis))) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore - if (nsnull == nativeThis) { + if (!nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLDOCUMENT_ROUTEEVENT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIEventIID, "Event", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->RouteEvent(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; diff --git a/mozilla/dom/src/html/nsJSHTMLElement.cpp b/mozilla/dom/src/html/nsJSHTMLElement.cpp index c30eaab439b..6562ade92a3 100644 --- a/mozilla/dom/src/html/nsJSHTMLElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLElement.h" #include "nsIDOMCSSStyleDeclaration.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLElementIID, NS_IDOMHTMLELEMENT_IID); static NS_DEFINE_IID(kICSSStyleDeclarationIID, NS_IDOMCSSSTYLEDECLARATION_IID); -NS_DEF_PTR(nsIDOMHTMLElement); -NS_DEF_PTR(nsIDOMCSSStyleDeclaration); - // // HTMLElement property ids // @@ -74,18 +71,19 @@ GetHTMLElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLELEMENT_ID: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLELEMENT_ID, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLELEMENT_ID, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -94,16 +92,16 @@ GetHTMLElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLELEMENT_TITLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLELEMENT_TITLE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLELEMENT_TITLE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -112,16 +110,16 @@ GetHTMLElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLELEMENT_LANG: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLELEMENT_LANG, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLELEMENT_LANG, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -130,16 +128,16 @@ GetHTMLElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLELEMENT_DIR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLELEMENT_DIR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLELEMENT_DIR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -148,16 +146,16 @@ GetHTMLElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLELEMENT_CLASSNAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLELEMENT_CLASSNAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLELEMENT_CLASSNAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -166,35 +164,35 @@ GetHTMLElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLELEMENT_STYLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLELEMENT_STYLE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLELEMENT_STYLE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMCSSStyleDeclaration* prop; nsresult result = NS_OK; result = a->GetStyle(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -215,18 +213,19 @@ SetHTMLElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLELEMENT_ID: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLELEMENT_ID, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLELEMENT_ID, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -238,9 +237,9 @@ SetHTMLElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLELEMENT_TITLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLELEMENT_TITLE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLELEMENT_TITLE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -252,9 +251,9 @@ SetHTMLElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLELEMENT_LANG: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLELEMENT_LANG, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLELEMENT_LANG, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -266,9 +265,9 @@ SetHTMLElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLELEMENT_DIR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLELEMENT_DIR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLELEMENT_DIR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -280,9 +279,9 @@ SetHTMLElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLELEMENT_CLASSNAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLELEMENT_CLASSNAME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLELEMENT_CLASSNAME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -292,11 +291,11 @@ SetHTMLElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLEmbedElement.cpp b/mozilla/dom/src/html/nsJSHTMLEmbedElement.cpp index 875ba39e5d5..d9f1065fe3d 100644 --- a/mozilla/dom/src/html/nsJSHTMLEmbedElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLEmbedElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMPlugin.h" #include "nsIDOMHTMLEmbedElement.h" @@ -48,9 +48,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIPluginIID, NS_IDOMPLUGIN_IID); static NS_DEFINE_IID(kIHTMLEmbedElementIID, NS_IDOMHTMLEMBEDELEMENT_IID); -NS_DEF_PTR(nsIDOMPlugin); -NS_DEF_PTR(nsIDOMHTMLEmbedElement); - // // HTMLEmbedElement property ids // @@ -78,18 +75,19 @@ GetHTMLEmbedElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLEMBEDELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLEMBEDELEMENT_ALIGN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLEMBEDELEMENT_ALIGN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -98,16 +96,16 @@ GetHTMLEmbedElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLEMBEDELEMENT_HEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLEMBEDELEMENT_HEIGHT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLEMBEDELEMENT_HEIGHT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -116,16 +114,16 @@ GetHTMLEmbedElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLEMBEDELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLEMBEDELEMENT_NAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLEMBEDELEMENT_NAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -134,16 +132,16 @@ GetHTMLEmbedElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLEMBEDELEMENT_SRC: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLEMBEDELEMENT_SRC, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLEMBEDELEMENT_SRC, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -152,16 +150,16 @@ GetHTMLEmbedElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLEMBEDELEMENT_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLEMBEDELEMENT_TYPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLEMBEDELEMENT_TYPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -170,16 +168,16 @@ GetHTMLEmbedElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLEMBEDELEMENT_WIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLEMBEDELEMENT_WIDTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLEMBEDELEMENT_WIDTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -188,16 +186,16 @@ GetHTMLEmbedElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -218,18 +216,19 @@ SetHTMLEmbedElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLEMBEDELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLEMBEDELEMENT_ALIGN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLEMBEDELEMENT_ALIGN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -241,9 +240,9 @@ SetHTMLEmbedElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLEMBEDELEMENT_HEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLEMBEDELEMENT_HEIGHT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLEMBEDELEMENT_HEIGHT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -255,9 +254,9 @@ SetHTMLEmbedElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLEMBEDELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLEMBEDELEMENT_NAME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLEMBEDELEMENT_NAME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -269,9 +268,9 @@ SetHTMLEmbedElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLEMBEDELEMENT_SRC: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLEMBEDELEMENT_SRC, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLEMBEDELEMENT_SRC, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -283,9 +282,9 @@ SetHTMLEmbedElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLEMBEDELEMENT_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLEMBEDELEMENT_TYPE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLEMBEDELEMENT_TYPE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -297,9 +296,9 @@ SetHTMLEmbedElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLEMBEDELEMENT_WIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLEMBEDELEMENT_WIDTH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLEMBEDELEMENT_WIDTH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -309,11 +308,11 @@ SetHTMLEmbedElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -400,8 +399,6 @@ HTMLEmbedElement(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r { nsresult result; nsIID classID; - nsIScriptContext* context = (nsIScriptContext*)JS_GetContextPrivate(cx); - nsIScriptNameSpaceManager* manager; nsIDOMHTMLEmbedElement *nativeThis; nsIScriptObjectOwner *owner = nsnull; nsIJSNativeInitializer* initializer = nsnull; @@ -409,13 +406,19 @@ HTMLEmbedElement(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r static NS_DEFINE_IID(kIDOMHTMLEmbedElementIID, NS_IDOMHTMLEMBEDELEMENT_IID); static NS_DEFINE_IID(kIJSNativeInitializerIID, NS_IJSNATIVEINITIALIZER_IID); - result = context->GetNameSpaceManager(&manager); - if (NS_OK != result) { + nsCOMPtr scriptCX; + nsJSUtils::nsGetStaticScriptContext(cx, obj, getter_AddRefs(scriptCX)); + if (!scriptCX) { + return JS_FALSE; + } + + nsCOMPtr manager; + scriptCX->GetNameSpaceManager(getter_AddRefs(manager)); + if (!manager) { return JS_FALSE; } result = manager->LookupName("HTMLEmbedElement", PR_TRUE, classID); - NS_RELEASE(manager); if (NS_OK != result) { return JS_FALSE; } @@ -430,7 +433,7 @@ HTMLEmbedElement(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r result = nativeThis->QueryInterface(kIJSNativeInitializerIID, (void **)&initializer); if (NS_OK == result) { - result = initializer->Initialize(cx, argc, argv); + result = initializer->Initialize(cx, obj, argc, argv); NS_RELEASE(initializer); if (NS_OK != result) { diff --git a/mozilla/dom/src/html/nsJSHTMLFieldSetElement.cpp b/mozilla/dom/src/html/nsJSHTMLFieldSetElement.cpp index 7ada6a75963..d1522901899 100644 --- a/mozilla/dom/src/html/nsJSHTMLFieldSetElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLFieldSetElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLFieldSetElement.h" #include "nsIDOMHTMLFormElement.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLFieldSetElementIID, NS_IDOMHTMLFIELDSETELEMENT_IID); static NS_DEFINE_IID(kIHTMLFormElementIID, NS_IDOMHTMLFORMELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLFieldSetElement); -NS_DEF_PTR(nsIDOMHTMLFormElement); - // // HTMLFieldSetElement property ids // @@ -69,37 +66,38 @@ GetHTMLFieldSetElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLFIELDSETELEMENT_FORM: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFIELDSETELEMENT_FORM, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFIELDSETELEMENT_FORM, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLFormElement* prop; nsresult result = NS_OK; result = a->GetForm(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -120,19 +118,20 @@ SetHTMLFieldSetElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLFontElement.cpp b/mozilla/dom/src/html/nsJSHTMLFontElement.cpp index 7eaa779d76a..23962d0a920 100644 --- a/mozilla/dom/src/html/nsJSHTMLFontElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLFontElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLFontElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLFontElementIID, NS_IDOMHTMLFONTELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLFontElement); - // // HTMLFontElement property ids // @@ -68,18 +66,19 @@ GetHTMLFontElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLFONTELEMENT_COLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFONTELEMENT_COLOR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFONTELEMENT_COLOR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -88,16 +87,16 @@ GetHTMLFontElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLFONTELEMENT_FACE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFONTELEMENT_FACE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFONTELEMENT_FACE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -106,16 +105,16 @@ GetHTMLFontElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLFONTELEMENT_SIZE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFONTELEMENT_SIZE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFONTELEMENT_SIZE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -124,16 +123,16 @@ GetHTMLFontElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -154,18 +153,19 @@ SetHTMLFontElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLFONTELEMENT_COLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFONTELEMENT_COLOR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFONTELEMENT_COLOR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -177,9 +177,9 @@ SetHTMLFontElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLFONTELEMENT_FACE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFONTELEMENT_FACE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFONTELEMENT_FACE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -191,9 +191,9 @@ SetHTMLFontElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLFONTELEMENT_SIZE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFONTELEMENT_SIZE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFONTELEMENT_SIZE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -203,11 +203,11 @@ SetHTMLFontElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLFormElement.cpp b/mozilla/dom/src/html/nsJSHTMLFormElement.cpp index f6307af152f..108a52a63f0 100644 --- a/mozilla/dom/src/html/nsJSHTMLFormElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLFormElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMNSHTMLFormElement.h" #include "nsIDOMElement.h" @@ -48,11 +48,6 @@ static NS_DEFINE_IID(kIElementIID, NS_IDOMELEMENT_IID); static NS_DEFINE_IID(kIHTMLFormElementIID, NS_IDOMHTMLFORMELEMENT_IID); static NS_DEFINE_IID(kIHTMLCollectionIID, NS_IDOMHTMLCOLLECTION_IID); -NS_DEF_PTR(nsIDOMNSHTMLFormElement); -NS_DEF_PTR(nsIDOMElement); -NS_DEF_PTR(nsIDOMHTMLFormElement); -NS_DEF_PTR(nsIDOMHTMLCollection); - // // HTMLFormElement property ids // @@ -84,38 +79,39 @@ GetHTMLFormElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) PRBool checkNamedItem = PR_TRUE; if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } checkNamedItem = PR_FALSE; switch(JSVAL_TO_INT(id)) { case HTMLFORMELEMENT_ELEMENTS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFORMELEMENT_ELEMENTS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFORMELEMENT_ELEMENTS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLCollection* prop; nsresult result = NS_OK; result = a->GetElements(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLFORMELEMENT_LENGTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFORMELEMENT_LENGTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFORMELEMENT_LENGTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRUint32 prop; nsresult result = NS_OK; @@ -124,16 +120,16 @@ GetHTMLFormElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLFORMELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFORMELEMENT_NAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFORMELEMENT_NAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -142,16 +138,16 @@ GetHTMLFormElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLFORMELEMENT_ACCEPTCHARSET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFORMELEMENT_ACCEPTCHARSET, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFORMELEMENT_ACCEPTCHARSET, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -160,16 +156,16 @@ GetHTMLFormElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLFORMELEMENT_ACTION: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFORMELEMENT_ACTION, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFORMELEMENT_ACTION, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -178,16 +174,16 @@ GetHTMLFormElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLFORMELEMENT_ENCTYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFORMELEMENT_ENCTYPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFORMELEMENT_ENCTYPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -196,16 +192,16 @@ GetHTMLFormElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLFORMELEMENT_METHOD: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFORMELEMENT_METHOD, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFORMELEMENT_METHOD, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -214,16 +210,16 @@ GetHTMLFormElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLFORMELEMENT_TARGET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFORMELEMENT_TARGET, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFORMELEMENT_TARGET, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -232,16 +228,16 @@ GetHTMLFormElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case NSHTMLFORMELEMENT_ENCODING: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLFORMELEMENT_ENCODING, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLFORMELEMENT_ENCODING, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsIDOMNSHTMLFormElement* b; @@ -254,11 +250,11 @@ GetHTMLFormElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } @@ -271,16 +267,16 @@ GetHTMLFormElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) result = b->Item(JSVAL_TO_INT(id), &prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); NS_RELEASE(b); } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } } } @@ -306,23 +302,23 @@ GetHTMLFormElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) NS_RELEASE(b); if (NULL != prop) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -344,19 +340,20 @@ SetHTMLFormElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) PRBool checkNamedItem = PR_TRUE; if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } checkNamedItem = PR_FALSE; switch(JSVAL_TO_INT(id)) { case HTMLFORMELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFORMELEMENT_NAME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFORMELEMENT_NAME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -368,9 +365,9 @@ SetHTMLFormElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLFORMELEMENT_ACCEPTCHARSET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFORMELEMENT_ACCEPTCHARSET, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFORMELEMENT_ACCEPTCHARSET, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -382,9 +379,9 @@ SetHTMLFormElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLFORMELEMENT_ACTION: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFORMELEMENT_ACTION, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFORMELEMENT_ACTION, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -396,9 +393,9 @@ SetHTMLFormElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLFORMELEMENT_ENCTYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFORMELEMENT_ENCTYPE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFORMELEMENT_ENCTYPE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -410,9 +407,9 @@ SetHTMLFormElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLFORMELEMENT_METHOD: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFORMELEMENT_METHOD, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFORMELEMENT_METHOD, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -424,9 +421,9 @@ SetHTMLFormElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLFORMELEMENT_TARGET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFORMELEMENT_TARGET, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFORMELEMENT_TARGET, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -436,11 +433,11 @@ SetHTMLFormElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -485,22 +482,6 @@ HTMLFormElementSubmit(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsv { nsIDOMHTMLFormElement *nativeThis = (nsIDOMHTMLFormElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFORMELEMENT_SUBMIT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -508,9 +489,26 @@ HTMLFormElementSubmit(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsv { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFORMELEMENT_SUBMIT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Submit(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -528,22 +526,6 @@ HTMLFormElementReset(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsva { nsIDOMHTMLFormElement *nativeThis = (nsIDOMHTMLFormElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFORMELEMENT_RESET, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -551,9 +533,26 @@ HTMLFormElementReset(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsva { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFORMELEMENT_RESET, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Reset(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -570,48 +569,49 @@ PR_STATIC_CALLBACK(JSBool) NSHTMLFormElementNamedItem(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMHTMLFormElement *privateThis = (nsIDOMHTMLFormElement*)nsJSUtils::nsGetNativeThis(cx, obj); - nsIDOMNSHTMLFormElementPtr nativeThis = nsnull; + nsCOMPtr nativeThis; nsresult result = NS_OK; - if (NS_OK != privateThis->QueryInterface(kINSHTMLFormElementIID, (void **)&nativeThis)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + if (NS_OK != privateThis->QueryInterface(kINSHTMLFormElementIID, getter_AddRefs(nativeThis))) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } nsIDOMElement* nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLFORMELEMENT_NAMEDITEM, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore - if (nsnull == nativeThis) { + if (!nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLFORMELEMENT_NAMEDITEM, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->NamedItem(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -625,50 +625,51 @@ PR_STATIC_CALLBACK(JSBool) NSHTMLFormElementItem(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMHTMLFormElement *privateThis = (nsIDOMHTMLFormElement*)nsJSUtils::nsGetNativeThis(cx, obj); - nsIDOMNSHTMLFormElementPtr nativeThis = nsnull; + nsCOMPtr nativeThis; nsresult result = NS_OK; - if (NS_OK != privateThis->QueryInterface(kINSHTMLFormElementIID, (void **)&nativeThis)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + if (NS_OK != privateThis->QueryInterface(kINSHTMLFormElementIID, getter_AddRefs(nativeThis))) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } nsIDOMElement* nativeRet; PRUint32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLFORMELEMENT_ITEM, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore - if (nsnull == nativeThis) { + if (!nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLFORMELEMENT_ITEM, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->Item(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLFrameElement.cpp b/mozilla/dom/src/html/nsJSHTMLFrameElement.cpp index e660ec4d6cc..b06c2fcfba0 100644 --- a/mozilla/dom/src/html/nsJSHTMLFrameElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLFrameElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLFrameElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLFrameElementIID, NS_IDOMHTMLFRAMEELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLFrameElement); - // // HTMLFrameElement property ids // @@ -73,18 +71,19 @@ GetHTMLFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLFRAMEELEMENT_FRAMEBORDER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_FRAMEBORDER, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_FRAMEBORDER, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -93,16 +92,16 @@ GetHTMLFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLFRAMEELEMENT_LONGDESC: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_LONGDESC, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_LONGDESC, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -111,16 +110,16 @@ GetHTMLFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLFRAMEELEMENT_MARGINHEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_MARGINHEIGHT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_MARGINHEIGHT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -129,16 +128,16 @@ GetHTMLFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLFRAMEELEMENT_MARGINWIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_MARGINWIDTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_MARGINWIDTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -147,16 +146,16 @@ GetHTMLFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLFRAMEELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_NAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_NAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -165,16 +164,16 @@ GetHTMLFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLFRAMEELEMENT_NORESIZE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_NORESIZE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_NORESIZE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -183,16 +182,16 @@ GetHTMLFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLFRAMEELEMENT_SCROLLING: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_SCROLLING, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_SCROLLING, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -201,16 +200,16 @@ GetHTMLFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLFRAMEELEMENT_SRC: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_SRC, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_SRC, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -219,16 +218,16 @@ GetHTMLFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -249,18 +248,19 @@ SetHTMLFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLFRAMEELEMENT_FRAMEBORDER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_FRAMEBORDER, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_FRAMEBORDER, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -272,9 +272,9 @@ SetHTMLFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLFRAMEELEMENT_LONGDESC: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_LONGDESC, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_LONGDESC, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -286,9 +286,9 @@ SetHTMLFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLFRAMEELEMENT_MARGINHEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_MARGINHEIGHT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_MARGINHEIGHT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -300,9 +300,9 @@ SetHTMLFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLFRAMEELEMENT_MARGINWIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_MARGINWIDTH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_MARGINWIDTH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -314,9 +314,9 @@ SetHTMLFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLFRAMEELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_NAME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_NAME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -328,13 +328,13 @@ SetHTMLFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLFRAMEELEMENT_NORESIZE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_NORESIZE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_NORESIZE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetNoResize(prop); @@ -344,9 +344,9 @@ SetHTMLFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLFRAMEELEMENT_SCROLLING: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_SCROLLING, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_SCROLLING, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -358,9 +358,9 @@ SetHTMLFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLFRAMEELEMENT_SRC: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_SRC, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFRAMEELEMENT_SRC, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -370,11 +370,11 @@ SetHTMLFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLFrameSetElement.cpp b/mozilla/dom/src/html/nsJSHTMLFrameSetElement.cpp index 98df51f7c1c..bad6505da05 100644 --- a/mozilla/dom/src/html/nsJSHTMLFrameSetElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLFrameSetElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLFrameSetElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLFrameSetElementIID, NS_IDOMHTMLFRAMESETELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLFrameSetElement); - // // HTMLFrameSetElement property ids // @@ -67,18 +65,19 @@ GetHTMLFrameSetElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLFRAMESETELEMENT_COLS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFRAMESETELEMENT_COLS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFRAMESETELEMENT_COLS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -87,16 +86,16 @@ GetHTMLFrameSetElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLFRAMESETELEMENT_ROWS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFRAMESETELEMENT_ROWS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFRAMESETELEMENT_ROWS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -105,16 +104,16 @@ GetHTMLFrameSetElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -135,18 +134,19 @@ SetHTMLFrameSetElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLFRAMESETELEMENT_COLS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFRAMESETELEMENT_COLS, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFRAMESETELEMENT_COLS, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -158,9 +158,9 @@ SetHTMLFrameSetElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp case HTMLFRAMESETELEMENT_ROWS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLFRAMESETELEMENT_ROWS, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLFRAMESETELEMENT_ROWS, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -170,11 +170,11 @@ SetHTMLFrameSetElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLHRElement.cpp b/mozilla/dom/src/html/nsJSHTMLHRElement.cpp index 2081791233a..3968f347a16 100644 --- a/mozilla/dom/src/html/nsJSHTMLHRElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLHRElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLHRElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLHRElementIID, NS_IDOMHTMLHRELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLHRElement); - // // HTMLHRElement property ids // @@ -69,18 +67,19 @@ GetHTMLHRElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLHRELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLHRELEMENT_ALIGN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLHRELEMENT_ALIGN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -89,16 +88,16 @@ GetHTMLHRElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLHRELEMENT_NOSHADE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLHRELEMENT_NOSHADE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLHRELEMENT_NOSHADE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -107,16 +106,16 @@ GetHTMLHRElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLHRELEMENT_SIZE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLHRELEMENT_SIZE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLHRELEMENT_SIZE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -125,16 +124,16 @@ GetHTMLHRElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLHRELEMENT_WIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLHRELEMENT_WIDTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLHRELEMENT_WIDTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -143,16 +142,16 @@ GetHTMLHRElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -173,18 +172,19 @@ SetHTMLHRElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLHRELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLHRELEMENT_ALIGN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLHRELEMENT_ALIGN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -196,13 +196,13 @@ SetHTMLHRElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLHRELEMENT_NOSHADE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLHRELEMENT_NOSHADE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLHRELEMENT_NOSHADE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetNoShade(prop); @@ -212,9 +212,9 @@ SetHTMLHRElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLHRELEMENT_SIZE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLHRELEMENT_SIZE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLHRELEMENT_SIZE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -226,9 +226,9 @@ SetHTMLHRElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLHRELEMENT_WIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLHRELEMENT_WIDTH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLHRELEMENT_WIDTH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -238,11 +238,11 @@ SetHTMLHRElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLHeadElement.cpp b/mozilla/dom/src/html/nsJSHTMLHeadElement.cpp index a166f76631d..d8469cb063d 100644 --- a/mozilla/dom/src/html/nsJSHTMLHeadElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLHeadElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLHeadElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLHeadElementIID, NS_IDOMHTMLHEADELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLHeadElement); - // // HTMLHeadElement property ids // @@ -66,18 +64,19 @@ GetHTMLHeadElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLHEADELEMENT_PROFILE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLHEADELEMENT_PROFILE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLHEADELEMENT_PROFILE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -86,16 +85,16 @@ GetHTMLHeadElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -116,18 +115,19 @@ SetHTMLHeadElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLHEADELEMENT_PROFILE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLHEADELEMENT_PROFILE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLHEADELEMENT_PROFILE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -137,11 +137,11 @@ SetHTMLHeadElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLHeadingElement.cpp b/mozilla/dom/src/html/nsJSHTMLHeadingElement.cpp index c57a0f79c23..599374f0446 100644 --- a/mozilla/dom/src/html/nsJSHTMLHeadingElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLHeadingElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLHeadingElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLHeadingElementIID, NS_IDOMHTMLHEADINGELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLHeadingElement); - // // HTMLHeadingElement property ids // @@ -66,18 +64,19 @@ GetHTMLHeadingElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLHEADINGELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLHEADINGELEMENT_ALIGN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLHEADINGELEMENT_ALIGN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -86,16 +85,16 @@ GetHTMLHeadingElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -116,18 +115,19 @@ SetHTMLHeadingElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLHEADINGELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLHEADINGELEMENT_ALIGN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLHEADINGELEMENT_ALIGN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -137,11 +137,11 @@ SetHTMLHeadingElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLHtmlElement.cpp b/mozilla/dom/src/html/nsJSHTMLHtmlElement.cpp index a3b61cb4e7e..94be4226995 100644 --- a/mozilla/dom/src/html/nsJSHTMLHtmlElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLHtmlElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLHtmlElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLHtmlElementIID, NS_IDOMHTMLHTMLELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLHtmlElement); - // // HTMLHtmlElement property ids // @@ -66,18 +64,19 @@ GetHTMLHtmlElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLHTMLELEMENT_VERSION: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLHTMLELEMENT_VERSION, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLHTMLELEMENT_VERSION, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -86,16 +85,16 @@ GetHTMLHtmlElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -116,18 +115,19 @@ SetHTMLHtmlElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLHTMLELEMENT_VERSION: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLHTMLELEMENT_VERSION, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLHTMLELEMENT_VERSION, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -137,11 +137,11 @@ SetHTMLHtmlElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLIFrameElement.cpp b/mozilla/dom/src/html/nsJSHTMLIFrameElement.cpp index 28b7c42ec29..3020693c243 100644 --- a/mozilla/dom/src/html/nsJSHTMLIFrameElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLIFrameElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLIFrameElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLIFrameElementIID, NS_IDOMHTMLIFRAMEELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLIFrameElement); - // // HTMLIFrameElement property ids // @@ -75,18 +73,19 @@ GetHTMLIFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLIFRAMEELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_ALIGN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_ALIGN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -95,16 +94,16 @@ GetHTMLIFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLIFRAMEELEMENT_FRAMEBORDER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_FRAMEBORDER, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_FRAMEBORDER, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -113,16 +112,16 @@ GetHTMLIFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLIFRAMEELEMENT_HEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_HEIGHT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_HEIGHT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -131,16 +130,16 @@ GetHTMLIFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLIFRAMEELEMENT_LONGDESC: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_LONGDESC, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_LONGDESC, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -149,16 +148,16 @@ GetHTMLIFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLIFRAMEELEMENT_MARGINHEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_MARGINHEIGHT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_MARGINHEIGHT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -167,16 +166,16 @@ GetHTMLIFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLIFRAMEELEMENT_MARGINWIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_MARGINWIDTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_MARGINWIDTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -185,16 +184,16 @@ GetHTMLIFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLIFRAMEELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_NAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_NAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -203,16 +202,16 @@ GetHTMLIFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLIFRAMEELEMENT_SCROLLING: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_SCROLLING, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_SCROLLING, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -221,16 +220,16 @@ GetHTMLIFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLIFRAMEELEMENT_SRC: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_SRC, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_SRC, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -239,16 +238,16 @@ GetHTMLIFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLIFRAMEELEMENT_WIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_WIDTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_WIDTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -257,16 +256,16 @@ GetHTMLIFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -287,18 +286,19 @@ SetHTMLIFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLIFRAMEELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_ALIGN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_ALIGN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -310,9 +310,9 @@ SetHTMLIFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLIFRAMEELEMENT_FRAMEBORDER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_FRAMEBORDER, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_FRAMEBORDER, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -324,9 +324,9 @@ SetHTMLIFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLIFRAMEELEMENT_HEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_HEIGHT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_HEIGHT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -338,9 +338,9 @@ SetHTMLIFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLIFRAMEELEMENT_LONGDESC: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_LONGDESC, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_LONGDESC, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -352,9 +352,9 @@ SetHTMLIFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLIFRAMEELEMENT_MARGINHEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_MARGINHEIGHT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_MARGINHEIGHT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -366,9 +366,9 @@ SetHTMLIFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLIFRAMEELEMENT_MARGINWIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_MARGINWIDTH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_MARGINWIDTH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -380,9 +380,9 @@ SetHTMLIFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLIFRAMEELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_NAME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_NAME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -394,9 +394,9 @@ SetHTMLIFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLIFRAMEELEMENT_SCROLLING: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_SCROLLING, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_SCROLLING, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -408,9 +408,9 @@ SetHTMLIFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLIFRAMEELEMENT_SRC: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_SRC, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_SRC, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -422,9 +422,9 @@ SetHTMLIFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLIFRAMEELEMENT_WIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_WIDTH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIFRAMEELEMENT_WIDTH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -434,11 +434,11 @@ SetHTMLIFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLImageElement.cpp b/mozilla/dom/src/html/nsJSHTMLImageElement.cpp index a991ee04020..d8c0c563014 100644 --- a/mozilla/dom/src/html/nsJSHTMLImageElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLImageElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMImage.h" #include "nsIDOMHTMLImageElement.h" @@ -48,9 +48,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIImageIID, NS_IDOMIMAGE_IID); static NS_DEFINE_IID(kIHTMLImageElementIID, NS_IDOMHTMLIMAGEELEMENT_IID); -NS_DEF_PTR(nsIDOMImage); -NS_DEF_PTR(nsIDOMHTMLImageElement); - // // HTMLImageElement property ids // @@ -84,18 +81,19 @@ GetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLIMAGEELEMENT_LOWSRC: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_LOWSRC, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_LOWSRC, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -104,16 +102,16 @@ GetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLIMAGEELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_NAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_NAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -122,16 +120,16 @@ GetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLIMAGEELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_ALIGN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_ALIGN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -140,16 +138,16 @@ GetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLIMAGEELEMENT_ALT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_ALT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_ALT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -158,16 +156,16 @@ GetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLIMAGEELEMENT_BORDER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_BORDER, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_BORDER, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -176,16 +174,16 @@ GetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLIMAGEELEMENT_HEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_HEIGHT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_HEIGHT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -194,16 +192,16 @@ GetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLIMAGEELEMENT_HSPACE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_HSPACE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_HSPACE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -212,16 +210,16 @@ GetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLIMAGEELEMENT_ISMAP: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_ISMAP, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_ISMAP, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -230,16 +228,16 @@ GetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLIMAGEELEMENT_LONGDESC: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_LONGDESC, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_LONGDESC, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -248,16 +246,16 @@ GetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLIMAGEELEMENT_USEMAP: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_USEMAP, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_USEMAP, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -266,16 +264,16 @@ GetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLIMAGEELEMENT_VSPACE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_VSPACE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_VSPACE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -284,16 +282,16 @@ GetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLIMAGEELEMENT_WIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_WIDTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_WIDTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -302,16 +300,16 @@ GetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -332,18 +330,19 @@ SetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLIMAGEELEMENT_LOWSRC: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_LOWSRC, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_LOWSRC, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -355,9 +354,9 @@ SetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLIMAGEELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_NAME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_NAME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -369,9 +368,9 @@ SetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLIMAGEELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_ALIGN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_ALIGN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -383,9 +382,9 @@ SetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLIMAGEELEMENT_ALT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_ALT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_ALT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -397,9 +396,9 @@ SetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLIMAGEELEMENT_BORDER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_BORDER, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_BORDER, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -411,9 +410,9 @@ SetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLIMAGEELEMENT_HEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_HEIGHT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_HEIGHT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -425,9 +424,9 @@ SetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLIMAGEELEMENT_HSPACE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_HSPACE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_HSPACE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -439,13 +438,13 @@ SetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLIMAGEELEMENT_ISMAP: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_ISMAP, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_ISMAP, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetIsMap(prop); @@ -455,9 +454,9 @@ SetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLIMAGEELEMENT_LONGDESC: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_LONGDESC, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_LONGDESC, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -469,9 +468,9 @@ SetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLIMAGEELEMENT_USEMAP: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_USEMAP, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_USEMAP, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -483,9 +482,9 @@ SetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLIMAGEELEMENT_VSPACE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_VSPACE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_VSPACE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -497,9 +496,9 @@ SetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLIMAGEELEMENT_WIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_WIDTH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLIMAGEELEMENT_WIDTH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -509,11 +508,11 @@ SetHTMLImageElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -606,8 +605,6 @@ HTMLImageElement(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r { nsresult result; nsIID classID; - nsIScriptContext* context = (nsIScriptContext*)JS_GetContextPrivate(cx); - nsIScriptNameSpaceManager* manager; nsIDOMHTMLImageElement *nativeThis; nsIScriptObjectOwner *owner = nsnull; nsIJSNativeInitializer* initializer = nsnull; @@ -615,13 +612,19 @@ HTMLImageElement(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r static NS_DEFINE_IID(kIDOMHTMLImageElementIID, NS_IDOMHTMLIMAGEELEMENT_IID); static NS_DEFINE_IID(kIJSNativeInitializerIID, NS_IJSNATIVEINITIALIZER_IID); - result = context->GetNameSpaceManager(&manager); - if (NS_OK != result) { + nsCOMPtr scriptCX; + nsJSUtils::nsGetStaticScriptContext(cx, obj, getter_AddRefs(scriptCX)); + if (!scriptCX) { + return JS_FALSE; + } + + nsCOMPtr manager; + scriptCX->GetNameSpaceManager(getter_AddRefs(manager)); + if (!manager) { return JS_FALSE; } result = manager->LookupName("HTMLImageElement", PR_TRUE, classID); - NS_RELEASE(manager); if (NS_OK != result) { return JS_FALSE; } @@ -636,7 +639,7 @@ HTMLImageElement(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r result = nativeThis->QueryInterface(kIJSNativeInitializerIID, (void **)&initializer); if (NS_OK == result) { - result = initializer->Initialize(cx, argc, argv); + result = initializer->Initialize(cx, obj, argc, argv); NS_RELEASE(initializer); if (NS_OK != result) { diff --git a/mozilla/dom/src/html/nsJSHTMLInputElement.cpp b/mozilla/dom/src/html/nsJSHTMLInputElement.cpp index 5a83225fb19..82d1637251b 100644 --- a/mozilla/dom/src/html/nsJSHTMLInputElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLInputElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLInputElement.h" #include "nsIDOMHTMLFormElement.h" @@ -48,11 +48,6 @@ static NS_DEFINE_IID(kIHTMLFormElementIID, NS_IDOMHTMLFORMELEMENT_IID); static NS_DEFINE_IID(kINSHTMLInputElementIID, NS_IDOMNSHTMLINPUTELEMENT_IID); static NS_DEFINE_IID(kIControllersIID, NS_ICONTROLLERS_IID); -NS_DEF_PTR(nsIDOMHTMLInputElement); -NS_DEF_PTR(nsIDOMHTMLFormElement); -NS_DEF_PTR(nsIDOMNSHTMLInputElement); -NS_DEF_PTR(nsIControllers); - // // HTMLInputElement property ids // @@ -94,18 +89,19 @@ GetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLINPUTELEMENT_DEFAULTVALUE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_DEFAULTVALUE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_DEFAULTVALUE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -114,16 +110,16 @@ GetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLINPUTELEMENT_DEFAULTCHECKED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_DEFAULTCHECKED, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_DEFAULTCHECKED, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -132,35 +128,35 @@ GetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLINPUTELEMENT_FORM: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_FORM, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_FORM, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLFormElement* prop; nsresult result = NS_OK; result = a->GetForm(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLINPUTELEMENT_ACCEPT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_ACCEPT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_ACCEPT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -169,16 +165,16 @@ GetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLINPUTELEMENT_ACCESSKEY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_ACCESSKEY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_ACCESSKEY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -187,16 +183,16 @@ GetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLINPUTELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_ALIGN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_ALIGN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -205,16 +201,16 @@ GetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLINPUTELEMENT_ALT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_ALT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_ALT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -223,16 +219,16 @@ GetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLINPUTELEMENT_CHECKED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_CHECKED, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_CHECKED, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -241,16 +237,16 @@ GetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLINPUTELEMENT_DISABLED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_DISABLED, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_DISABLED, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -259,16 +255,16 @@ GetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLINPUTELEMENT_MAXLENGTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_MAXLENGTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_MAXLENGTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -277,16 +273,16 @@ GetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLINPUTELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_NAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_NAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -295,16 +291,16 @@ GetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLINPUTELEMENT_READONLY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_READONLY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_READONLY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -313,16 +309,16 @@ GetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLINPUTELEMENT_SIZE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_SIZE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_SIZE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -331,16 +327,16 @@ GetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLINPUTELEMENT_SRC: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_SRC, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_SRC, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -349,16 +345,16 @@ GetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLINPUTELEMENT_TABINDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_TABINDEX, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_TABINDEX, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -367,16 +363,16 @@ GetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLINPUTELEMENT_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_TYPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_TYPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -385,16 +381,16 @@ GetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLINPUTELEMENT_USEMAP: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_USEMAP, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_USEMAP, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -403,16 +399,16 @@ GetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLINPUTELEMENT_VALUE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_VALUE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_VALUE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -421,16 +417,16 @@ GetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLINPUTELEMENT_AUTOCOMPLETE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_AUTOCOMPLETE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_AUTOCOMPLETE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -439,16 +435,16 @@ GetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case NSHTMLINPUTELEMENT_CONTROLLERS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLINPUTELEMENT_CONTROLLERS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLINPUTELEMENT_CONTROLLERS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIControllers* prop; nsIDOMNSHTMLInputElement* b; @@ -457,25 +453,25 @@ GetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) result = b->GetControllers(&prop); if(NS_SUCCEEDED(result)) { // get the js object; n.b., this will do a release on 'prop' - nsJSUtils::nsConvertXPCObjectToJSVal(prop, nsIControllers::GetIID(), cx, vp); + nsJSUtils::nsConvertXPCObjectToJSVal(prop, nsIControllers::GetIID(), cx, obj, vp); NS_RELEASE(b); } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -496,18 +492,19 @@ SetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLINPUTELEMENT_DEFAULTVALUE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_DEFAULTVALUE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_DEFAULTVALUE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -519,13 +516,13 @@ SetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLINPUTELEMENT_DEFAULTCHECKED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_DEFAULTCHECKED, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_DEFAULTCHECKED, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetDefaultChecked(prop); @@ -535,9 +532,9 @@ SetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLINPUTELEMENT_ACCEPT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_ACCEPT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_ACCEPT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -549,9 +546,9 @@ SetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLINPUTELEMENT_ACCESSKEY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_ACCESSKEY, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_ACCESSKEY, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -563,9 +560,9 @@ SetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLINPUTELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_ALIGN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_ALIGN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -577,9 +574,9 @@ SetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLINPUTELEMENT_ALT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_ALT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_ALT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -591,13 +588,13 @@ SetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLINPUTELEMENT_CHECKED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_CHECKED, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_CHECKED, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetChecked(prop); @@ -607,13 +604,13 @@ SetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLINPUTELEMENT_DISABLED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_DISABLED, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_DISABLED, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetDisabled(prop); @@ -623,9 +620,9 @@ SetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLINPUTELEMENT_MAXLENGTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_MAXLENGTH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_MAXLENGTH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -633,7 +630,7 @@ SetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetMaxLength(prop); @@ -643,9 +640,9 @@ SetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLINPUTELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_NAME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_NAME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -657,13 +654,13 @@ SetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLINPUTELEMENT_READONLY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_READONLY, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_READONLY, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetReadOnly(prop); @@ -673,9 +670,9 @@ SetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLINPUTELEMENT_SIZE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_SIZE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_SIZE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -687,9 +684,9 @@ SetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLINPUTELEMENT_SRC: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_SRC, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_SRC, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -701,9 +698,9 @@ SetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLINPUTELEMENT_TABINDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_TABINDEX, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_TABINDEX, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -711,7 +708,7 @@ SetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetTabIndex(prop); @@ -721,9 +718,9 @@ SetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLINPUTELEMENT_USEMAP: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_USEMAP, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_USEMAP, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -735,9 +732,9 @@ SetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLINPUTELEMENT_VALUE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_VALUE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_VALUE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -749,9 +746,9 @@ SetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLINPUTELEMENT_AUTOCOMPLETE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_AUTOCOMPLETE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_AUTOCOMPLETE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -761,11 +758,11 @@ SetHTMLInputElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -810,22 +807,6 @@ HTMLInputElementBlur(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsva { nsIDOMHTMLInputElement *nativeThis = (nsIDOMHTMLInputElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_BLUR, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -833,9 +814,26 @@ HTMLInputElementBlur(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsva { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_BLUR, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Blur(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -853,22 +851,6 @@ HTMLInputElementFocus(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsv { nsIDOMHTMLInputElement *nativeThis = (nsIDOMHTMLInputElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_FOCUS, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -876,9 +858,26 @@ HTMLInputElementFocus(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsv { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_FOCUS, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Focus(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -896,22 +895,6 @@ HTMLInputElementSelect(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, js { nsIDOMHTMLInputElement *nativeThis = (nsIDOMHTMLInputElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_SELECT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -919,9 +902,26 @@ HTMLInputElementSelect(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, js { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_SELECT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Select(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -939,22 +939,6 @@ HTMLInputElementClick(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsv { nsIDOMHTMLInputElement *nativeThis = (nsIDOMHTMLInputElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLINPUTELEMENT_CLICK, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -962,9 +946,26 @@ HTMLInputElementClick(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsv { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLINPUTELEMENT_CLICK, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Click(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; diff --git a/mozilla/dom/src/html/nsJSHTMLIsIndexElement.cpp b/mozilla/dom/src/html/nsJSHTMLIsIndexElement.cpp index 1aa1718deab..80d19b343a2 100644 --- a/mozilla/dom/src/html/nsJSHTMLIsIndexElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLIsIndexElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLFormElement.h" #include "nsIDOMHTMLIsIndexElement.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLFormElementIID, NS_IDOMHTMLFORMELEMENT_IID); static NS_DEFINE_IID(kIHTMLIsIndexElementIID, NS_IDOMHTMLISINDEXELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLFormElement); -NS_DEF_PTR(nsIDOMHTMLIsIndexElement); - // // HTMLIsIndexElement property ids // @@ -70,37 +67,38 @@ GetHTMLIsIndexElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLISINDEXELEMENT_FORM: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLISINDEXELEMENT_FORM, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLISINDEXELEMENT_FORM, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLFormElement* prop; nsresult result = NS_OK; result = a->GetForm(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLISINDEXELEMENT_PROMPT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLISINDEXELEMENT_PROMPT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLISINDEXELEMENT_PROMPT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -109,16 +107,16 @@ GetHTMLIsIndexElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -139,18 +137,19 @@ SetHTMLIsIndexElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLISINDEXELEMENT_PROMPT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLISINDEXELEMENT_PROMPT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLISINDEXELEMENT_PROMPT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -160,11 +159,11 @@ SetHTMLIsIndexElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLLIElement.cpp b/mozilla/dom/src/html/nsJSHTMLLIElement.cpp index a8973a5f53f..cffd0f43cbf 100644 --- a/mozilla/dom/src/html/nsJSHTMLLIElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLLIElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLLIElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLLIElementIID, NS_IDOMHTMLLIELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLLIElement); - // // HTMLLIElement property ids // @@ -67,18 +65,19 @@ GetHTMLLIElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLLIELEMENT_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLIELEMENT_TYPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLIELEMENT_TYPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -87,16 +86,16 @@ GetHTMLLIElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLLIELEMENT_VALUE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLIELEMENT_VALUE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLIELEMENT_VALUE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -105,16 +104,16 @@ GetHTMLLIElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -135,18 +134,19 @@ SetHTMLLIElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLLIELEMENT_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLIELEMENT_TYPE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLIELEMENT_TYPE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -158,9 +158,9 @@ SetHTMLLIElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLLIELEMENT_VALUE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLIELEMENT_VALUE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLIELEMENT_VALUE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -168,7 +168,7 @@ SetHTMLLIElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetValue(prop); @@ -176,11 +176,11 @@ SetHTMLLIElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLLabelElement.cpp b/mozilla/dom/src/html/nsJSHTMLLabelElement.cpp index 367483ae891..9854de74efb 100644 --- a/mozilla/dom/src/html/nsJSHTMLLabelElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLLabelElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLFormElement.h" #include "nsIDOMHTMLLabelElement.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLFormElementIID, NS_IDOMHTMLFORMELEMENT_IID); static NS_DEFINE_IID(kIHTMLLabelElementIID, NS_IDOMHTMLLABELELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLFormElement); -NS_DEF_PTR(nsIDOMHTMLLabelElement); - // // HTMLLabelElement property ids // @@ -71,37 +68,38 @@ GetHTMLLabelElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLLABELELEMENT_FORM: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLABELELEMENT_FORM, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLABELELEMENT_FORM, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLFormElement* prop; nsresult result = NS_OK; result = a->GetForm(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLLABELELEMENT_ACCESSKEY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLABELELEMENT_ACCESSKEY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLABELELEMENT_ACCESSKEY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -110,16 +108,16 @@ GetHTMLLabelElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLLABELELEMENT_HTMLFOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLABELELEMENT_HTMLFOR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLABELELEMENT_HTMLFOR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -128,16 +126,16 @@ GetHTMLLabelElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -158,18 +156,19 @@ SetHTMLLabelElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLLABELELEMENT_ACCESSKEY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLABELELEMENT_ACCESSKEY, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLABELELEMENT_ACCESSKEY, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -181,9 +180,9 @@ SetHTMLLabelElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLLABELELEMENT_HTMLFOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLABELELEMENT_HTMLFOR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLABELELEMENT_HTMLFOR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -193,11 +192,11 @@ SetHTMLLabelElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLLayerElement.cpp b/mozilla/dom/src/html/nsJSHTMLLayerElement.cpp index 561eb493946..a9bf1e013ff 100644 --- a/mozilla/dom/src/html/nsJSHTMLLayerElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLLayerElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMDocument.h" #include "nsIDOMHTMLLayerElement.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIDocumentIID, NS_IDOMDOCUMENT_IID); static NS_DEFINE_IID(kIHTMLLayerElementIID, NS_IDOMHTMLLAYERELEMENT_IID); -NS_DEF_PTR(nsIDOMDocument); -NS_DEF_PTR(nsIDOMHTMLLayerElement); - // // HTMLLayerElement property ids // @@ -76,18 +73,19 @@ GetHTMLLayerElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLLAYERELEMENT_TOP: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLAYERELEMENT_TOP, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLAYERELEMENT_TOP, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -96,16 +94,16 @@ GetHTMLLayerElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLLAYERELEMENT_LEFT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLAYERELEMENT_LEFT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLAYERELEMENT_LEFT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -114,16 +112,16 @@ GetHTMLLayerElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLLAYERELEMENT_VISIBILITY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLAYERELEMENT_VISIBILITY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLAYERELEMENT_VISIBILITY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -132,16 +130,16 @@ GetHTMLLayerElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLLAYERELEMENT_BACKGROUND: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLAYERELEMENT_BACKGROUND, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLAYERELEMENT_BACKGROUND, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -150,16 +148,16 @@ GetHTMLLayerElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLLAYERELEMENT_BGCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLAYERELEMENT_BGCOLOR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLAYERELEMENT_BGCOLOR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -168,16 +166,16 @@ GetHTMLLayerElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLLAYERELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLAYERELEMENT_NAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLAYERELEMENT_NAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -186,16 +184,16 @@ GetHTMLLayerElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLLAYERELEMENT_ZINDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLAYERELEMENT_ZINDEX, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLAYERELEMENT_ZINDEX, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -204,35 +202,35 @@ GetHTMLLayerElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLLAYERELEMENT_DOCUMENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLAYERELEMENT_DOCUMENT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLAYERELEMENT_DOCUMENT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMDocument* prop; nsresult result = NS_OK; result = a->GetDocument(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -253,18 +251,19 @@ SetHTMLLayerElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLLAYERELEMENT_TOP: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLAYERELEMENT_TOP, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLAYERELEMENT_TOP, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -272,7 +271,7 @@ SetHTMLLayerElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetTop(prop); @@ -282,9 +281,9 @@ SetHTMLLayerElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLLAYERELEMENT_LEFT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLAYERELEMENT_LEFT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLAYERELEMENT_LEFT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -292,7 +291,7 @@ SetHTMLLayerElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetLeft(prop); @@ -302,9 +301,9 @@ SetHTMLLayerElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLLAYERELEMENT_VISIBILITY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLAYERELEMENT_VISIBILITY, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLAYERELEMENT_VISIBILITY, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -316,9 +315,9 @@ SetHTMLLayerElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLLAYERELEMENT_BACKGROUND: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLAYERELEMENT_BACKGROUND, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLAYERELEMENT_BACKGROUND, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -330,9 +329,9 @@ SetHTMLLayerElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLLAYERELEMENT_BGCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLAYERELEMENT_BGCOLOR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLAYERELEMENT_BGCOLOR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -344,9 +343,9 @@ SetHTMLLayerElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLLAYERELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLAYERELEMENT_NAME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLAYERELEMENT_NAME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -358,9 +357,9 @@ SetHTMLLayerElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLLAYERELEMENT_ZINDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLAYERELEMENT_ZINDEX, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLAYERELEMENT_ZINDEX, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -368,7 +367,7 @@ SetHTMLLayerElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetZIndex(prop); @@ -376,11 +375,11 @@ SetHTMLLayerElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLLegendElement.cpp b/mozilla/dom/src/html/nsJSHTMLLegendElement.cpp index 848c3bdc9cc..abaa9d40b82 100644 --- a/mozilla/dom/src/html/nsJSHTMLLegendElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLLegendElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLFormElement.h" #include "nsIDOMHTMLLegendElement.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLFormElementIID, NS_IDOMHTMLFORMELEMENT_IID); static NS_DEFINE_IID(kIHTMLLegendElementIID, NS_IDOMHTMLLEGENDELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLFormElement); -NS_DEF_PTR(nsIDOMHTMLLegendElement); - // // HTMLLegendElement property ids // @@ -71,37 +68,38 @@ GetHTMLLegendElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLLEGENDELEMENT_FORM: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLEGENDELEMENT_FORM, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLEGENDELEMENT_FORM, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLFormElement* prop; nsresult result = NS_OK; result = a->GetForm(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLLEGENDELEMENT_ACCESSKEY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLEGENDELEMENT_ACCESSKEY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLEGENDELEMENT_ACCESSKEY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -110,16 +108,16 @@ GetHTMLLegendElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLLEGENDELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLEGENDELEMENT_ALIGN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLEGENDELEMENT_ALIGN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -128,16 +126,16 @@ GetHTMLLegendElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -158,18 +156,19 @@ SetHTMLLegendElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLLEGENDELEMENT_ACCESSKEY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLEGENDELEMENT_ACCESSKEY, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLEGENDELEMENT_ACCESSKEY, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -181,9 +180,9 @@ SetHTMLLegendElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLLEGENDELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLEGENDELEMENT_ALIGN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLEGENDELEMENT_ALIGN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -193,11 +192,11 @@ SetHTMLLegendElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLLinkElement.cpp b/mozilla/dom/src/html/nsJSHTMLLinkElement.cpp index e663aae0cf3..ca176129c67 100644 --- a/mozilla/dom/src/html/nsJSHTMLLinkElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLLinkElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLLinkElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLLinkElementIID, NS_IDOMHTMLLINKELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLLinkElement); - // // HTMLLinkElement property ids // @@ -74,18 +72,19 @@ GetHTMLLinkElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLLINKELEMENT_DISABLED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLINKELEMENT_DISABLED, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLINKELEMENT_DISABLED, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -94,16 +93,16 @@ GetHTMLLinkElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLLINKELEMENT_CHARSET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLINKELEMENT_CHARSET, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLINKELEMENT_CHARSET, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -112,16 +111,16 @@ GetHTMLLinkElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLLINKELEMENT_HREF: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLINKELEMENT_HREF, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLINKELEMENT_HREF, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -130,16 +129,16 @@ GetHTMLLinkElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLLINKELEMENT_HREFLANG: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLINKELEMENT_HREFLANG, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLINKELEMENT_HREFLANG, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -148,16 +147,16 @@ GetHTMLLinkElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLLINKELEMENT_MEDIA: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLINKELEMENT_MEDIA, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLINKELEMENT_MEDIA, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -166,16 +165,16 @@ GetHTMLLinkElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLLINKELEMENT_REL: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLINKELEMENT_REL, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLINKELEMENT_REL, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -184,16 +183,16 @@ GetHTMLLinkElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLLINKELEMENT_REV: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLINKELEMENT_REV, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLINKELEMENT_REV, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -202,16 +201,16 @@ GetHTMLLinkElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLLINKELEMENT_TARGET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLINKELEMENT_TARGET, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLINKELEMENT_TARGET, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -220,16 +219,16 @@ GetHTMLLinkElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLLINKELEMENT_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLINKELEMENT_TYPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLINKELEMENT_TYPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -238,16 +237,16 @@ GetHTMLLinkElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -268,22 +267,23 @@ SetHTMLLinkElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLLINKELEMENT_DISABLED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLINKELEMENT_DISABLED, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLINKELEMENT_DISABLED, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetDisabled(prop); @@ -293,9 +293,9 @@ SetHTMLLinkElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLLINKELEMENT_CHARSET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLINKELEMENT_CHARSET, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLINKELEMENT_CHARSET, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -307,9 +307,9 @@ SetHTMLLinkElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLLINKELEMENT_HREF: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLINKELEMENT_HREF, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLINKELEMENT_HREF, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -321,9 +321,9 @@ SetHTMLLinkElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLLINKELEMENT_HREFLANG: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLINKELEMENT_HREFLANG, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLINKELEMENT_HREFLANG, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -335,9 +335,9 @@ SetHTMLLinkElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLLINKELEMENT_MEDIA: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLINKELEMENT_MEDIA, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLINKELEMENT_MEDIA, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -349,9 +349,9 @@ SetHTMLLinkElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLLINKELEMENT_REL: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLINKELEMENT_REL, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLINKELEMENT_REL, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -363,9 +363,9 @@ SetHTMLLinkElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLLINKELEMENT_REV: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLINKELEMENT_REV, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLINKELEMENT_REV, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -377,9 +377,9 @@ SetHTMLLinkElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLLINKELEMENT_TARGET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLINKELEMENT_TARGET, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLINKELEMENT_TARGET, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -391,9 +391,9 @@ SetHTMLLinkElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLLINKELEMENT_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLLINKELEMENT_TYPE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLLINKELEMENT_TYPE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -403,11 +403,11 @@ SetHTMLLinkElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLMapElement.cpp b/mozilla/dom/src/html/nsJSHTMLMapElement.cpp index 9e91192863c..f9b653194ae 100644 --- a/mozilla/dom/src/html/nsJSHTMLMapElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLMapElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLMapElement.h" #include "nsIDOMHTMLCollection.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLMapElementIID, NS_IDOMHTMLMAPELEMENT_IID); static NS_DEFINE_IID(kIHTMLCollectionIID, NS_IDOMHTMLCOLLECTION_IID); -NS_DEF_PTR(nsIDOMHTMLMapElement); -NS_DEF_PTR(nsIDOMHTMLCollection); - // // HTMLMapElement property ids // @@ -70,37 +67,38 @@ GetHTMLMapElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLMAPELEMENT_AREAS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLMAPELEMENT_AREAS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLMAPELEMENT_AREAS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLCollection* prop; nsresult result = NS_OK; result = a->GetAreas(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLMAPELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLMAPELEMENT_NAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLMAPELEMENT_NAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -109,16 +107,16 @@ GetHTMLMapElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -139,18 +137,19 @@ SetHTMLMapElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLMAPELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLMAPELEMENT_NAME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLMAPELEMENT_NAME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -160,11 +159,11 @@ SetHTMLMapElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLMenuElement.cpp b/mozilla/dom/src/html/nsJSHTMLMenuElement.cpp index 6c3210b8e41..60d1ef78c34 100644 --- a/mozilla/dom/src/html/nsJSHTMLMenuElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLMenuElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLMenuElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLMenuElementIID, NS_IDOMHTMLMENUELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLMenuElement); - // // HTMLMenuElement property ids // @@ -66,18 +64,19 @@ GetHTMLMenuElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLMENUELEMENT_COMPACT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLMENUELEMENT_COMPACT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLMENUELEMENT_COMPACT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -86,16 +85,16 @@ GetHTMLMenuElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -116,22 +115,23 @@ SetHTMLMenuElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLMENUELEMENT_COMPACT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLMENUELEMENT_COMPACT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLMENUELEMENT_COMPACT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetCompact(prop); @@ -139,11 +139,11 @@ SetHTMLMenuElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLMetaElement.cpp b/mozilla/dom/src/html/nsJSHTMLMetaElement.cpp index 999808d120f..d5f1adbf019 100644 --- a/mozilla/dom/src/html/nsJSHTMLMetaElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLMetaElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLMetaElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLMetaElementIID, NS_IDOMHTMLMETAELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLMetaElement); - // // HTMLMetaElement property ids // @@ -69,18 +67,19 @@ GetHTMLMetaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLMETAELEMENT_CONTENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLMETAELEMENT_CONTENT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLMETAELEMENT_CONTENT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -89,16 +88,16 @@ GetHTMLMetaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLMETAELEMENT_HTTPEQUIV: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLMETAELEMENT_HTTPEQUIV, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLMETAELEMENT_HTTPEQUIV, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -107,16 +106,16 @@ GetHTMLMetaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLMETAELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLMETAELEMENT_NAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLMETAELEMENT_NAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -125,16 +124,16 @@ GetHTMLMetaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLMETAELEMENT_SCHEME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLMETAELEMENT_SCHEME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLMETAELEMENT_SCHEME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -143,16 +142,16 @@ GetHTMLMetaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -173,18 +172,19 @@ SetHTMLMetaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLMETAELEMENT_CONTENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLMETAELEMENT_CONTENT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLMETAELEMENT_CONTENT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -196,9 +196,9 @@ SetHTMLMetaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLMETAELEMENT_HTTPEQUIV: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLMETAELEMENT_HTTPEQUIV, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLMETAELEMENT_HTTPEQUIV, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -210,9 +210,9 @@ SetHTMLMetaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLMETAELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLMETAELEMENT_NAME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLMETAELEMENT_NAME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -224,9 +224,9 @@ SetHTMLMetaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLMETAELEMENT_SCHEME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLMETAELEMENT_SCHEME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLMETAELEMENT_SCHEME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -236,11 +236,11 @@ SetHTMLMetaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLModElement.cpp b/mozilla/dom/src/html/nsJSHTMLModElement.cpp index 26f6fc56c1c..dd500c03675 100644 --- a/mozilla/dom/src/html/nsJSHTMLModElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLModElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLModElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLModElementIID, NS_IDOMHTMLMODELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLModElement); - // // HTMLModElement property ids // @@ -67,18 +65,19 @@ GetHTMLModElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLMODELEMENT_CITE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLMODELEMENT_CITE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLMODELEMENT_CITE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -87,16 +86,16 @@ GetHTMLModElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLMODELEMENT_DATETIME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLMODELEMENT_DATETIME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLMODELEMENT_DATETIME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -105,16 +104,16 @@ GetHTMLModElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -135,18 +134,19 @@ SetHTMLModElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLMODELEMENT_CITE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLMODELEMENT_CITE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLMODELEMENT_CITE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -158,9 +158,9 @@ SetHTMLModElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLMODELEMENT_DATETIME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLMODELEMENT_DATETIME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLMODELEMENT_DATETIME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -170,11 +170,11 @@ SetHTMLModElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLOListElement.cpp b/mozilla/dom/src/html/nsJSHTMLOListElement.cpp index 120f7d3f081..867f1f02431 100644 --- a/mozilla/dom/src/html/nsJSHTMLOListElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLOListElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLOListElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLOListElementIID, NS_IDOMHTMLOLISTELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLOListElement); - // // HTMLOListElement property ids // @@ -68,18 +66,19 @@ GetHTMLOListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLOLISTELEMENT_COMPACT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOLISTELEMENT_COMPACT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOLISTELEMENT_COMPACT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -88,16 +87,16 @@ GetHTMLOListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOLISTELEMENT_START: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOLISTELEMENT_START, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOLISTELEMENT_START, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -106,16 +105,16 @@ GetHTMLOListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOLISTELEMENT_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOLISTELEMENT_TYPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOLISTELEMENT_TYPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -124,16 +123,16 @@ GetHTMLOListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -154,22 +153,23 @@ SetHTMLOListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLOLISTELEMENT_COMPACT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOLISTELEMENT_COMPACT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOLISTELEMENT_COMPACT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetCompact(prop); @@ -179,9 +179,9 @@ SetHTMLOListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLOLISTELEMENT_START: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOLISTELEMENT_START, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOLISTELEMENT_START, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -189,7 +189,7 @@ SetHTMLOListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetStart(prop); @@ -199,9 +199,9 @@ SetHTMLOListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLOLISTELEMENT_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOLISTELEMENT_TYPE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOLISTELEMENT_TYPE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -211,11 +211,11 @@ SetHTMLOListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLObjectElement.cpp b/mozilla/dom/src/html/nsJSHTMLObjectElement.cpp index b431820d805..1bc05aa42d8 100644 --- a/mozilla/dom/src/html/nsJSHTMLObjectElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLObjectElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLFormElement.h" #include "nsIDOMHTMLObjectElement.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLFormElementIID, NS_IDOMHTMLFORMELEMENT_IID); static NS_DEFINE_IID(kIHTMLObjectElementIID, NS_IDOMHTMLOBJECTELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLFormElement); -NS_DEF_PTR(nsIDOMHTMLObjectElement); - // // HTMLObjectElement property ids // @@ -86,37 +83,38 @@ GetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLOBJECTELEMENT_FORM: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_FORM, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_FORM, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLFormElement* prop; nsresult result = NS_OK; result = a->GetForm(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOBJECTELEMENT_CODE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_CODE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_CODE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -125,16 +123,16 @@ GetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOBJECTELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_ALIGN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_ALIGN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -143,16 +141,16 @@ GetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOBJECTELEMENT_ARCHIVE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_ARCHIVE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_ARCHIVE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -161,16 +159,16 @@ GetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOBJECTELEMENT_BORDER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_BORDER, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_BORDER, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -179,16 +177,16 @@ GetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOBJECTELEMENT_CODEBASE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_CODEBASE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_CODEBASE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -197,16 +195,16 @@ GetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOBJECTELEMENT_CODETYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_CODETYPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_CODETYPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -215,16 +213,16 @@ GetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOBJECTELEMENT_DATA: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_DATA, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_DATA, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -233,16 +231,16 @@ GetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOBJECTELEMENT_DECLARE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_DECLARE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_DECLARE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -251,16 +249,16 @@ GetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOBJECTELEMENT_HEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_HEIGHT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_HEIGHT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -269,16 +267,16 @@ GetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOBJECTELEMENT_HSPACE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_HSPACE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_HSPACE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -287,16 +285,16 @@ GetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOBJECTELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_NAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_NAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -305,16 +303,16 @@ GetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOBJECTELEMENT_STANDBY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_STANDBY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_STANDBY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -323,16 +321,16 @@ GetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOBJECTELEMENT_TABINDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_TABINDEX, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_TABINDEX, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -341,16 +339,16 @@ GetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOBJECTELEMENT_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_TYPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_TYPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -359,16 +357,16 @@ GetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOBJECTELEMENT_USEMAP: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_USEMAP, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_USEMAP, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -377,16 +375,16 @@ GetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOBJECTELEMENT_VSPACE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_VSPACE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_VSPACE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -395,16 +393,16 @@ GetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOBJECTELEMENT_WIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_WIDTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_WIDTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -413,16 +411,16 @@ GetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -443,18 +441,19 @@ SetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLOBJECTELEMENT_CODE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_CODE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_CODE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -466,9 +465,9 @@ SetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLOBJECTELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_ALIGN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_ALIGN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -480,9 +479,9 @@ SetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLOBJECTELEMENT_ARCHIVE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_ARCHIVE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_ARCHIVE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -494,9 +493,9 @@ SetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLOBJECTELEMENT_BORDER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_BORDER, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_BORDER, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -508,9 +507,9 @@ SetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLOBJECTELEMENT_CODEBASE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_CODEBASE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_CODEBASE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -522,9 +521,9 @@ SetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLOBJECTELEMENT_CODETYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_CODETYPE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_CODETYPE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -536,9 +535,9 @@ SetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLOBJECTELEMENT_DATA: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_DATA, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_DATA, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -550,13 +549,13 @@ SetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLOBJECTELEMENT_DECLARE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_DECLARE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_DECLARE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetDeclare(prop); @@ -566,9 +565,9 @@ SetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLOBJECTELEMENT_HEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_HEIGHT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_HEIGHT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -580,9 +579,9 @@ SetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLOBJECTELEMENT_HSPACE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_HSPACE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_HSPACE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -594,9 +593,9 @@ SetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLOBJECTELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_NAME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_NAME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -608,9 +607,9 @@ SetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLOBJECTELEMENT_STANDBY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_STANDBY, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_STANDBY, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -622,9 +621,9 @@ SetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLOBJECTELEMENT_TABINDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_TABINDEX, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_TABINDEX, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -632,7 +631,7 @@ SetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetTabIndex(prop); @@ -642,9 +641,9 @@ SetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLOBJECTELEMENT_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_TYPE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_TYPE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -656,9 +655,9 @@ SetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLOBJECTELEMENT_USEMAP: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_USEMAP, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_USEMAP, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -670,9 +669,9 @@ SetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLOBJECTELEMENT_VSPACE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_VSPACE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_VSPACE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -684,9 +683,9 @@ SetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLOBJECTELEMENT_WIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_WIDTH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOBJECTELEMENT_WIDTH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -696,11 +695,11 @@ SetHTMLObjectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLOptGroupElement.cpp b/mozilla/dom/src/html/nsJSHTMLOptGroupElement.cpp index 2ba7fffa228..c26c03a35cc 100644 --- a/mozilla/dom/src/html/nsJSHTMLOptGroupElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLOptGroupElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLOptGroupElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLOptGroupElementIID, NS_IDOMHTMLOPTGROUPELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLOptGroupElement); - // // HTMLOptGroupElement property ids // @@ -67,18 +65,19 @@ GetHTMLOptGroupElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLOPTGROUPELEMENT_DISABLED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOPTGROUPELEMENT_DISABLED, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOPTGROUPELEMENT_DISABLED, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -87,16 +86,16 @@ GetHTMLOptGroupElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOPTGROUPELEMENT_LABEL: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOPTGROUPELEMENT_LABEL, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOPTGROUPELEMENT_LABEL, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -105,16 +104,16 @@ GetHTMLOptGroupElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -135,22 +134,23 @@ SetHTMLOptGroupElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLOPTGROUPELEMENT_DISABLED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOPTGROUPELEMENT_DISABLED, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOPTGROUPELEMENT_DISABLED, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetDisabled(prop); @@ -160,9 +160,9 @@ SetHTMLOptGroupElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp case HTMLOPTGROUPELEMENT_LABEL: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOPTGROUPELEMENT_LABEL, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOPTGROUPELEMENT_LABEL, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -172,11 +172,11 @@ SetHTMLOptGroupElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLOptionElement.cpp b/mozilla/dom/src/html/nsJSHTMLOptionElement.cpp index ef304107d67..c37fc676646 100644 --- a/mozilla/dom/src/html/nsJSHTMLOptionElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLOptionElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLFormElement.h" #include "nsIDOMHTMLOptionElement.h" @@ -50,10 +50,6 @@ static NS_DEFINE_IID(kIHTMLFormElementIID, NS_IDOMHTMLFORMELEMENT_IID); static NS_DEFINE_IID(kIHTMLOptionElementIID, NS_IDOMHTMLOPTIONELEMENT_IID); static NS_DEFINE_IID(kIOptionIID, NS_IDOMOPTION_IID); -NS_DEF_PTR(nsIDOMHTMLFormElement); -NS_DEF_PTR(nsIDOMHTMLOptionElement); -NS_DEF_PTR(nsIDOMOption); - // // HTMLOptionElement property ids // @@ -83,37 +79,38 @@ GetHTMLOptionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLOPTIONELEMENT_FORM: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_FORM, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_FORM, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLFormElement* prop; nsresult result = NS_OK; result = a->GetForm(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOPTIONELEMENT_DEFAULTSELECTED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_DEFAULTSELECTED, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_DEFAULTSELECTED, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -122,16 +119,16 @@ GetHTMLOptionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOPTIONELEMENT_TEXT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_TEXT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_TEXT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -140,16 +137,16 @@ GetHTMLOptionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOPTIONELEMENT_INDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_INDEX, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_INDEX, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -158,16 +155,16 @@ GetHTMLOptionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOPTIONELEMENT_DISABLED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_DISABLED, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_DISABLED, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -176,16 +173,16 @@ GetHTMLOptionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOPTIONELEMENT_LABEL: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_LABEL, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_LABEL, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -194,16 +191,16 @@ GetHTMLOptionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOPTIONELEMENT_SELECTED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_SELECTED, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_SELECTED, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -212,16 +209,16 @@ GetHTMLOptionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLOPTIONELEMENT_VALUE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_VALUE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_VALUE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -230,16 +227,16 @@ GetHTMLOptionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -260,22 +257,23 @@ SetHTMLOptionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLOPTIONELEMENT_DEFAULTSELECTED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_DEFAULTSELECTED, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_DEFAULTSELECTED, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetDefaultSelected(prop); @@ -285,9 +283,9 @@ SetHTMLOptionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLOPTIONELEMENT_INDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_INDEX, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_INDEX, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -295,7 +293,7 @@ SetHTMLOptionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetIndex(prop); @@ -305,13 +303,13 @@ SetHTMLOptionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLOPTIONELEMENT_DISABLED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_DISABLED, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_DISABLED, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetDisabled(prop); @@ -321,9 +319,9 @@ SetHTMLOptionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLOPTIONELEMENT_LABEL: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_LABEL, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_LABEL, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -335,13 +333,13 @@ SetHTMLOptionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLOPTIONELEMENT_SELECTED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_SELECTED, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_SELECTED, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetSelected(prop); @@ -351,9 +349,9 @@ SetHTMLOptionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLOPTIONELEMENT_VALUE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_VALUE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLOPTIONELEMENT_VALUE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -363,11 +361,11 @@ SetHTMLOptionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -456,8 +454,6 @@ HTMLOptionElement(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval * { nsresult result; nsIID classID; - nsIScriptContext* context = (nsIScriptContext*)JS_GetContextPrivate(cx); - nsIScriptNameSpaceManager* manager; nsIDOMHTMLOptionElement *nativeThis; nsIScriptObjectOwner *owner = nsnull; nsIJSNativeInitializer* initializer = nsnull; @@ -465,13 +461,19 @@ HTMLOptionElement(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval * static NS_DEFINE_IID(kIDOMHTMLOptionElementIID, NS_IDOMHTMLOPTIONELEMENT_IID); static NS_DEFINE_IID(kIJSNativeInitializerIID, NS_IJSNATIVEINITIALIZER_IID); - result = context->GetNameSpaceManager(&manager); - if (NS_OK != result) { + nsCOMPtr scriptCX; + nsJSUtils::nsGetStaticScriptContext(cx, obj, getter_AddRefs(scriptCX)); + if (!scriptCX) { + return JS_FALSE; + } + + nsCOMPtr manager; + scriptCX->GetNameSpaceManager(getter_AddRefs(manager)); + if (!manager) { return JS_FALSE; } result = manager->LookupName("HTMLOptionElement", PR_TRUE, classID); - NS_RELEASE(manager); if (NS_OK != result) { return JS_FALSE; } @@ -486,7 +488,7 @@ HTMLOptionElement(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval * result = nativeThis->QueryInterface(kIJSNativeInitializerIID, (void **)&initializer); if (NS_OK == result) { - result = initializer->Initialize(cx, argc, argv); + result = initializer->Initialize(cx, obj, argc, argv); NS_RELEASE(initializer); if (NS_OK != result) { diff --git a/mozilla/dom/src/html/nsJSHTMLParagraphElement.cpp b/mozilla/dom/src/html/nsJSHTMLParagraphElement.cpp index 058cd9ab4bd..f74d1abb0c2 100644 --- a/mozilla/dom/src/html/nsJSHTMLParagraphElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLParagraphElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLParagraphElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLParagraphElementIID, NS_IDOMHTMLPARAGRAPHELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLParagraphElement); - // // HTMLParagraphElement property ids // @@ -66,18 +64,19 @@ GetHTMLParagraphElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLPARAGRAPHELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLPARAGRAPHELEMENT_ALIGN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLPARAGRAPHELEMENT_ALIGN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -86,16 +85,16 @@ GetHTMLParagraphElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -116,18 +115,19 @@ SetHTMLParagraphElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLPARAGRAPHELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLPARAGRAPHELEMENT_ALIGN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLPARAGRAPHELEMENT_ALIGN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -137,11 +137,11 @@ SetHTMLParagraphElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLParamElement.cpp b/mozilla/dom/src/html/nsJSHTMLParamElement.cpp index d66f54cda5d..e70a9fe72c5 100644 --- a/mozilla/dom/src/html/nsJSHTMLParamElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLParamElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLParamElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLParamElementIID, NS_IDOMHTMLPARAMELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLParamElement); - // // HTMLParamElement property ids // @@ -69,18 +67,19 @@ GetHTMLParamElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLPARAMELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLPARAMELEMENT_NAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLPARAMELEMENT_NAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -89,16 +88,16 @@ GetHTMLParamElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLPARAMELEMENT_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLPARAMELEMENT_TYPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLPARAMELEMENT_TYPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -107,16 +106,16 @@ GetHTMLParamElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLPARAMELEMENT_VALUE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLPARAMELEMENT_VALUE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLPARAMELEMENT_VALUE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -125,16 +124,16 @@ GetHTMLParamElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLPARAMELEMENT_VALUETYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLPARAMELEMENT_VALUETYPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLPARAMELEMENT_VALUETYPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -143,16 +142,16 @@ GetHTMLParamElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -173,18 +172,19 @@ SetHTMLParamElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLPARAMELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLPARAMELEMENT_NAME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLPARAMELEMENT_NAME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -196,9 +196,9 @@ SetHTMLParamElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLPARAMELEMENT_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLPARAMELEMENT_TYPE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLPARAMELEMENT_TYPE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -210,9 +210,9 @@ SetHTMLParamElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLPARAMELEMENT_VALUE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLPARAMELEMENT_VALUE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLPARAMELEMENT_VALUE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -224,9 +224,9 @@ SetHTMLParamElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLPARAMELEMENT_VALUETYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLPARAMELEMENT_VALUETYPE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLPARAMELEMENT_VALUETYPE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -236,11 +236,11 @@ SetHTMLParamElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLPreElement.cpp b/mozilla/dom/src/html/nsJSHTMLPreElement.cpp index d460f05064b..6d7b9576ba9 100644 --- a/mozilla/dom/src/html/nsJSHTMLPreElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLPreElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLPreElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLPreElementIID, NS_IDOMHTMLPREELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLPreElement); - // // HTMLPreElement property ids // @@ -66,18 +64,19 @@ GetHTMLPreElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLPREELEMENT_WIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLPREELEMENT_WIDTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLPREELEMENT_WIDTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -86,16 +85,16 @@ GetHTMLPreElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -116,18 +115,19 @@ SetHTMLPreElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLPREELEMENT_WIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLPREELEMENT_WIDTH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLPREELEMENT_WIDTH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -135,7 +135,7 @@ SetHTMLPreElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetWidth(prop); @@ -143,11 +143,11 @@ SetHTMLPreElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLQuoteElement.cpp b/mozilla/dom/src/html/nsJSHTMLQuoteElement.cpp index 8af330802c3..0c5a7adc52b 100644 --- a/mozilla/dom/src/html/nsJSHTMLQuoteElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLQuoteElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLQuoteElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLQuoteElementIID, NS_IDOMHTMLQUOTEELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLQuoteElement); - // // HTMLQuoteElement property ids // @@ -66,18 +64,19 @@ GetHTMLQuoteElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLQUOTEELEMENT_CITE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLQUOTEELEMENT_CITE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLQUOTEELEMENT_CITE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -86,16 +85,16 @@ GetHTMLQuoteElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -116,18 +115,19 @@ SetHTMLQuoteElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLQUOTEELEMENT_CITE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLQUOTEELEMENT_CITE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLQUOTEELEMENT_CITE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -137,11 +137,11 @@ SetHTMLQuoteElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLScriptElement.cpp b/mozilla/dom/src/html/nsJSHTMLScriptElement.cpp index b4d8434a992..1eed83b7f35 100644 --- a/mozilla/dom/src/html/nsJSHTMLScriptElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLScriptElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLScriptElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLScriptElementIID, NS_IDOMHTMLSCRIPTELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLScriptElement); - // // HTMLScriptElement property ids // @@ -72,18 +70,19 @@ GetHTMLScriptElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLSCRIPTELEMENT_TEXT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_TEXT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_TEXT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -92,16 +91,16 @@ GetHTMLScriptElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLSCRIPTELEMENT_HTMLFOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_HTMLFOR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_HTMLFOR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -110,16 +109,16 @@ GetHTMLScriptElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLSCRIPTELEMENT_EVENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_EVENT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_EVENT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -128,16 +127,16 @@ GetHTMLScriptElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLSCRIPTELEMENT_CHARSET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_CHARSET, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_CHARSET, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -146,16 +145,16 @@ GetHTMLScriptElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLSCRIPTELEMENT_DEFER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_DEFER, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_DEFER, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -164,16 +163,16 @@ GetHTMLScriptElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLSCRIPTELEMENT_SRC: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_SRC, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_SRC, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -182,16 +181,16 @@ GetHTMLScriptElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLSCRIPTELEMENT_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_TYPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_TYPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -200,16 +199,16 @@ GetHTMLScriptElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -230,18 +229,19 @@ SetHTMLScriptElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLSCRIPTELEMENT_TEXT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_TEXT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_TEXT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -253,9 +253,9 @@ SetHTMLScriptElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLSCRIPTELEMENT_HTMLFOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_HTMLFOR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_HTMLFOR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -267,9 +267,9 @@ SetHTMLScriptElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLSCRIPTELEMENT_EVENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_EVENT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_EVENT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -281,9 +281,9 @@ SetHTMLScriptElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLSCRIPTELEMENT_CHARSET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_CHARSET, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_CHARSET, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -295,13 +295,13 @@ SetHTMLScriptElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLSCRIPTELEMENT_DEFER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_DEFER, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_DEFER, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetDefer(prop); @@ -311,9 +311,9 @@ SetHTMLScriptElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLSCRIPTELEMENT_SRC: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_SRC, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_SRC, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -325,9 +325,9 @@ SetHTMLScriptElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLSCRIPTELEMENT_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_TYPE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSCRIPTELEMENT_TYPE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -337,11 +337,11 @@ SetHTMLScriptElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLSelectElement.cpp b/mozilla/dom/src/html/nsJSHTMLSelectElement.cpp index 3b7ae335fef..c41c0c5fa67 100644 --- a/mozilla/dom/src/html/nsJSHTMLSelectElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLSelectElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLSelectElement.h" #include "nsIDOMElement.h" @@ -52,13 +52,6 @@ static NS_DEFINE_IID(kIHTMLFormElementIID, NS_IDOMHTMLFORMELEMENT_IID); static NS_DEFINE_IID(kINSHTMLSelectElementIID, NS_IDOMNSHTMLSELECTELEMENT_IID); static NS_DEFINE_IID(kIHTMLCollectionIID, NS_IDOMHTMLCOLLECTION_IID); -NS_DEF_PTR(nsIDOMHTMLSelectElement); -NS_DEF_PTR(nsIDOMElement); -NS_DEF_PTR(nsIDOMHTMLElement); -NS_DEF_PTR(nsIDOMHTMLFormElement); -NS_DEF_PTR(nsIDOMNSHTMLSelectElement); -NS_DEF_PTR(nsIDOMHTMLCollection); - // // HTMLSelectElement property ids // @@ -91,18 +84,19 @@ GetHTMLSelectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLSELECTELEMENT_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSELECTELEMENT_TYPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSELECTELEMENT_TYPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -111,16 +105,16 @@ GetHTMLSelectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLSELECTELEMENT_SELECTEDINDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSELECTELEMENT_SELECTEDINDEX, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSELECTELEMENT_SELECTEDINDEX, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -129,16 +123,16 @@ GetHTMLSelectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLSELECTELEMENT_VALUE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSELECTELEMENT_VALUE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSELECTELEMENT_VALUE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -147,16 +141,16 @@ GetHTMLSelectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLSELECTELEMENT_LENGTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSELECTELEMENT_LENGTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSELECTELEMENT_LENGTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRUint32 prop; nsresult result = NS_OK; @@ -165,54 +159,54 @@ GetHTMLSelectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLSELECTELEMENT_FORM: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSELECTELEMENT_FORM, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSELECTELEMENT_FORM, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLFormElement* prop; nsresult result = NS_OK; result = a->GetForm(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLSELECTELEMENT_OPTIONS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSELECTELEMENT_OPTIONS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSELECTELEMENT_OPTIONS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLCollection* prop; nsresult result = NS_OK; result = a->GetOptions(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLSELECTELEMENT_DISABLED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSELECTELEMENT_DISABLED, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSELECTELEMENT_DISABLED, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -221,16 +215,16 @@ GetHTMLSelectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLSELECTELEMENT_MULTIPLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSELECTELEMENT_MULTIPLE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSELECTELEMENT_MULTIPLE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -239,16 +233,16 @@ GetHTMLSelectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLSELECTELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSELECTELEMENT_NAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSELECTELEMENT_NAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -257,16 +251,16 @@ GetHTMLSelectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLSELECTELEMENT_SIZE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSELECTELEMENT_SIZE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSELECTELEMENT_SIZE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -275,16 +269,16 @@ GetHTMLSelectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLSELECTELEMENT_TABINDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSELECTELEMENT_TABINDEX, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSELECTELEMENT_TABINDEX, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -293,7 +287,7 @@ GetHTMLSelectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } @@ -306,22 +300,22 @@ GetHTMLSelectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) result = b->Item(JSVAL_TO_INT(id), &prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); NS_RELEASE(b); } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } } } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -342,18 +336,19 @@ SetHTMLSelectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLSELECTELEMENT_SELECTEDINDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSELECTELEMENT_SELECTEDINDEX, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSELECTELEMENT_SELECTEDINDEX, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -361,7 +356,7 @@ SetHTMLSelectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetSelectedIndex(prop); @@ -371,9 +366,9 @@ SetHTMLSelectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLSELECTELEMENT_VALUE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSELECTELEMENT_VALUE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSELECTELEMENT_VALUE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -385,13 +380,13 @@ SetHTMLSelectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLSELECTELEMENT_DISABLED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSELECTELEMENT_DISABLED, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSELECTELEMENT_DISABLED, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetDisabled(prop); @@ -401,13 +396,13 @@ SetHTMLSelectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLSELECTELEMENT_MULTIPLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSELECTELEMENT_MULTIPLE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSELECTELEMENT_MULTIPLE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetMultiple(prop); @@ -417,9 +412,9 @@ SetHTMLSelectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLSELECTELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSELECTELEMENT_NAME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSELECTELEMENT_NAME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -431,9 +426,9 @@ SetHTMLSelectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLSELECTELEMENT_SIZE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSELECTELEMENT_SIZE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSELECTELEMENT_SIZE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -441,7 +436,7 @@ SetHTMLSelectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetSize(prop); @@ -451,9 +446,9 @@ SetHTMLSelectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLSELECTELEMENT_TABINDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSELECTELEMENT_TABINDEX, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSELECTELEMENT_TABINDEX, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -461,7 +456,7 @@ SetHTMLSelectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetTabIndex(prop); @@ -469,11 +464,11 @@ SetHTMLSelectElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -518,52 +513,53 @@ HTMLSelectElementAdd(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsva { nsIDOMHTMLSelectElement *nativeThis = (nsIDOMHTMLSelectElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMHTMLElementPtr b0; - nsIDOMHTMLElementPtr b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSELECTELEMENT_ADD, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; + nsCOMPtr b1; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSELECTELEMENT_ADD, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIHTMLElementIID, "HTMLElement", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b1, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b1), kIHTMLElementIID, "HTMLElement", cx, argv[1])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->Add(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -582,39 +578,40 @@ HTMLSelectElementRemove(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, j nsIDOMHTMLSelectElement *nativeThis = (nsIDOMHTMLSelectElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; PRInt32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSELECTELEMENT_REMOVE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSELECTELEMENT_REMOVE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->Remove(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -632,22 +629,6 @@ HTMLSelectElementBlur(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsv { nsIDOMHTMLSelectElement *nativeThis = (nsIDOMHTMLSelectElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSELECTELEMENT_BLUR, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -655,9 +636,26 @@ HTMLSelectElementBlur(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsv { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSELECTELEMENT_BLUR, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Blur(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -675,22 +673,6 @@ HTMLSelectElementFocus(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, js { nsIDOMHTMLSelectElement *nativeThis = (nsIDOMHTMLSelectElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSELECTELEMENT_FOCUS, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -698,9 +680,26 @@ HTMLSelectElementFocus(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, js { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSELECTELEMENT_FOCUS, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Focus(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -717,50 +716,51 @@ PR_STATIC_CALLBACK(JSBool) NSHTMLSelectElementItem(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMHTMLSelectElement *privateThis = (nsIDOMHTMLSelectElement*)nsJSUtils::nsGetNativeThis(cx, obj); - nsIDOMNSHTMLSelectElementPtr nativeThis = nsnull; + nsCOMPtr nativeThis; nsresult result = NS_OK; - if (NS_OK != privateThis->QueryInterface(kINSHTMLSelectElementIID, (void **)&nativeThis)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + if (NS_OK != privateThis->QueryInterface(kINSHTMLSelectElementIID, getter_AddRefs(nativeThis))) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } nsIDOMElement* nativeRet; PRUint32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLSELECTELEMENT_ITEM, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore - if (nsnull == nativeThis) { + if (!nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLSELECTELEMENT_ITEM, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->Item(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLStyleElement.cpp b/mozilla/dom/src/html/nsJSHTMLStyleElement.cpp index 5953e6237cc..6a3e63b141d 100644 --- a/mozilla/dom/src/html/nsJSHTMLStyleElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLStyleElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLStyleElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLStyleElementIID, NS_IDOMHTMLSTYLEELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLStyleElement); - // // HTMLStyleElement property ids // @@ -68,18 +66,19 @@ GetHTMLStyleElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLSTYLEELEMENT_DISABLED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSTYLEELEMENT_DISABLED, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSTYLEELEMENT_DISABLED, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -88,16 +87,16 @@ GetHTMLStyleElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLSTYLEELEMENT_MEDIA: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSTYLEELEMENT_MEDIA, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSTYLEELEMENT_MEDIA, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -106,16 +105,16 @@ GetHTMLStyleElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLSTYLEELEMENT_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSTYLEELEMENT_TYPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSTYLEELEMENT_TYPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -124,16 +123,16 @@ GetHTMLStyleElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -154,22 +153,23 @@ SetHTMLStyleElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLSTYLEELEMENT_DISABLED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSTYLEELEMENT_DISABLED, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSTYLEELEMENT_DISABLED, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetDisabled(prop); @@ -179,9 +179,9 @@ SetHTMLStyleElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLSTYLEELEMENT_MEDIA: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSTYLEELEMENT_MEDIA, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSTYLEELEMENT_MEDIA, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -193,9 +193,9 @@ SetHTMLStyleElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLSTYLEELEMENT_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLSTYLEELEMENT_TYPE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLSTYLEELEMENT_TYPE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -205,11 +205,11 @@ SetHTMLStyleElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLTableCaptionElement.cpp b/mozilla/dom/src/html/nsJSHTMLTableCaptionElement.cpp index 2396128966e..3bbdfaf066b 100644 --- a/mozilla/dom/src/html/nsJSHTMLTableCaptionElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLTableCaptionElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLTableCaptionElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLTableCaptionElementIID, NS_IDOMHTMLTABLECAPTIONELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLTableCaptionElement); - // // HTMLTableCaptionElement property ids // @@ -66,18 +64,19 @@ GetHTMLTableCaptionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLTABLECAPTIONELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECAPTIONELEMENT_ALIGN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECAPTIONELEMENT_ALIGN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -86,16 +85,16 @@ GetHTMLTableCaptionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -116,18 +115,19 @@ SetHTMLTableCaptionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLTABLECAPTIONELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECAPTIONELEMENT_ALIGN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECAPTIONELEMENT_ALIGN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -137,11 +137,11 @@ SetHTMLTableCaptionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLTableCellElement.cpp b/mozilla/dom/src/html/nsJSHTMLTableCellElement.cpp index 039fed1504c..4c1d37f3ee8 100644 --- a/mozilla/dom/src/html/nsJSHTMLTableCellElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLTableCellElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLTableCellElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLTableCellElementIID, NS_IDOMHTMLTABLECELLELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLTableCellElement); - // // HTMLTableCellElement property ids // @@ -80,18 +78,19 @@ GetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLTABLECELLELEMENT_CELLINDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_CELLINDEX, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_CELLINDEX, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -100,16 +99,16 @@ GetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLECELLELEMENT_ABBR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_ABBR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_ABBR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -118,16 +117,16 @@ GetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLECELLELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_ALIGN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_ALIGN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -136,16 +135,16 @@ GetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLECELLELEMENT_AXIS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_AXIS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_AXIS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -154,16 +153,16 @@ GetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLECELLELEMENT_BGCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_BGCOLOR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_BGCOLOR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -172,16 +171,16 @@ GetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLECELLELEMENT_CH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_CH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_CH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -190,16 +189,16 @@ GetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLECELLELEMENT_CHOFF: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_CHOFF, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_CHOFF, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -208,16 +207,16 @@ GetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLECELLELEMENT_COLSPAN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_COLSPAN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_COLSPAN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -226,16 +225,16 @@ GetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLECELLELEMENT_HEADERS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_HEADERS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_HEADERS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -244,16 +243,16 @@ GetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLECELLELEMENT_HEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_HEIGHT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_HEIGHT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -262,16 +261,16 @@ GetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLECELLELEMENT_NOWRAP: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_NOWRAP, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_NOWRAP, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -280,16 +279,16 @@ GetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLECELLELEMENT_ROWSPAN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_ROWSPAN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_ROWSPAN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -298,16 +297,16 @@ GetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLECELLELEMENT_SCOPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_SCOPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_SCOPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -316,16 +315,16 @@ GetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLECELLELEMENT_VALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_VALIGN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_VALIGN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -334,16 +333,16 @@ GetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLECELLELEMENT_WIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_WIDTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_WIDTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -352,16 +351,16 @@ GetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -382,18 +381,19 @@ SetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLTABLECELLELEMENT_CELLINDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_CELLINDEX, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_CELLINDEX, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -401,7 +401,7 @@ SetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetCellIndex(prop); @@ -411,9 +411,9 @@ SetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v case HTMLTABLECELLELEMENT_ABBR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_ABBR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_ABBR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -425,9 +425,9 @@ SetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v case HTMLTABLECELLELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_ALIGN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_ALIGN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -439,9 +439,9 @@ SetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v case HTMLTABLECELLELEMENT_AXIS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_AXIS, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_AXIS, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -453,9 +453,9 @@ SetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v case HTMLTABLECELLELEMENT_BGCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_BGCOLOR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_BGCOLOR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -467,9 +467,9 @@ SetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v case HTMLTABLECELLELEMENT_CH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_CH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_CH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -481,9 +481,9 @@ SetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v case HTMLTABLECELLELEMENT_CHOFF: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_CHOFF, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_CHOFF, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -495,9 +495,9 @@ SetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v case HTMLTABLECELLELEMENT_COLSPAN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_COLSPAN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_COLSPAN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -505,7 +505,7 @@ SetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetColSpan(prop); @@ -515,9 +515,9 @@ SetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v case HTMLTABLECELLELEMENT_HEADERS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_HEADERS, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_HEADERS, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -529,9 +529,9 @@ SetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v case HTMLTABLECELLELEMENT_HEIGHT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_HEIGHT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_HEIGHT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -543,13 +543,13 @@ SetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v case HTMLTABLECELLELEMENT_NOWRAP: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_NOWRAP, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_NOWRAP, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetNoWrap(prop); @@ -559,9 +559,9 @@ SetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v case HTMLTABLECELLELEMENT_ROWSPAN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_ROWSPAN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_ROWSPAN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -569,7 +569,7 @@ SetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetRowSpan(prop); @@ -579,9 +579,9 @@ SetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v case HTMLTABLECELLELEMENT_SCOPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_SCOPE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_SCOPE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -593,9 +593,9 @@ SetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v case HTMLTABLECELLELEMENT_VALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_VALIGN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_VALIGN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -607,9 +607,9 @@ SetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v case HTMLTABLECELLELEMENT_WIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_WIDTH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECELLELEMENT_WIDTH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -619,11 +619,11 @@ SetHTMLTableCellElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLTableColElement.cpp b/mozilla/dom/src/html/nsJSHTMLTableColElement.cpp index 950de767449..cbea3cd86c9 100644 --- a/mozilla/dom/src/html/nsJSHTMLTableColElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLTableColElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLTableColElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLTableColElementIID, NS_IDOMHTMLTABLECOLELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLTableColElement); - // // HTMLTableColElement property ids // @@ -71,18 +69,19 @@ GetHTMLTableColElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLTABLECOLELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECOLELEMENT_ALIGN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECOLELEMENT_ALIGN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -91,16 +90,16 @@ GetHTMLTableColElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLECOLELEMENT_CH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECOLELEMENT_CH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECOLELEMENT_CH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -109,16 +108,16 @@ GetHTMLTableColElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLECOLELEMENT_CHOFF: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECOLELEMENT_CHOFF, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECOLELEMENT_CHOFF, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -127,16 +126,16 @@ GetHTMLTableColElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLECOLELEMENT_SPAN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECOLELEMENT_SPAN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECOLELEMENT_SPAN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -145,16 +144,16 @@ GetHTMLTableColElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLECOLELEMENT_VALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECOLELEMENT_VALIGN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECOLELEMENT_VALIGN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -163,16 +162,16 @@ GetHTMLTableColElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLECOLELEMENT_WIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECOLELEMENT_WIDTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECOLELEMENT_WIDTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -181,16 +180,16 @@ GetHTMLTableColElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -211,18 +210,19 @@ SetHTMLTableColElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLTABLECOLELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECOLELEMENT_ALIGN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECOLELEMENT_ALIGN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -234,9 +234,9 @@ SetHTMLTableColElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp case HTMLTABLECOLELEMENT_CH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECOLELEMENT_CH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECOLELEMENT_CH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -248,9 +248,9 @@ SetHTMLTableColElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp case HTMLTABLECOLELEMENT_CHOFF: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECOLELEMENT_CHOFF, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECOLELEMENT_CHOFF, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -262,9 +262,9 @@ SetHTMLTableColElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp case HTMLTABLECOLELEMENT_SPAN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECOLELEMENT_SPAN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECOLELEMENT_SPAN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -272,7 +272,7 @@ SetHTMLTableColElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetSpan(prop); @@ -282,9 +282,9 @@ SetHTMLTableColElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp case HTMLTABLECOLELEMENT_VALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECOLELEMENT_VALIGN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECOLELEMENT_VALIGN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -296,9 +296,9 @@ SetHTMLTableColElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp case HTMLTABLECOLELEMENT_WIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLECOLELEMENT_WIDTH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLECOLELEMENT_WIDTH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -308,11 +308,11 @@ SetHTMLTableColElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLTableElement.cpp b/mozilla/dom/src/html/nsJSHTMLTableElement.cpp index 8a215a305f6..66fbec1ed4f 100644 --- a/mozilla/dom/src/html/nsJSHTMLTableElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLTableElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLElement.h" #include "nsIDOMHTMLTableElement.h" @@ -50,12 +50,6 @@ static NS_DEFINE_IID(kIHTMLTableCaptionElementIID, NS_IDOMHTMLTABLECAPTIONELEMEN static NS_DEFINE_IID(kIHTMLTableSectionElementIID, NS_IDOMHTMLTABLESECTIONELEMENT_IID); static NS_DEFINE_IID(kIHTMLCollectionIID, NS_IDOMHTMLCOLLECTION_IID); -NS_DEF_PTR(nsIDOMHTMLElement); -NS_DEF_PTR(nsIDOMHTMLTableElement); -NS_DEF_PTR(nsIDOMHTMLTableCaptionElement); -NS_DEF_PTR(nsIDOMHTMLTableSectionElement); -NS_DEF_PTR(nsIDOMHTMLCollection); - // // HTMLTableElement property ids // @@ -91,113 +85,114 @@ GetHTMLTableElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLTABLEELEMENT_CAPTION: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_CAPTION, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_CAPTION, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLTableCaptionElement* prop; nsresult result = NS_OK; result = a->GetCaption(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLEELEMENT_THEAD: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_THEAD, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_THEAD, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLTableSectionElement* prop; nsresult result = NS_OK; result = a->GetTHead(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLEELEMENT_TFOOT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_TFOOT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_TFOOT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLTableSectionElement* prop; nsresult result = NS_OK; result = a->GetTFoot(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLEELEMENT_ROWS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_ROWS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_ROWS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLCollection* prop; nsresult result = NS_OK; result = a->GetRows(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLEELEMENT_TBODIES: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_TBODIES, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_TBODIES, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLCollection* prop; nsresult result = NS_OK; result = a->GetTBodies(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLEELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_ALIGN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_ALIGN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -206,16 +201,16 @@ GetHTMLTableElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLEELEMENT_BGCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_BGCOLOR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_BGCOLOR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -224,16 +219,16 @@ GetHTMLTableElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLEELEMENT_BORDER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_BORDER, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_BORDER, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -242,16 +237,16 @@ GetHTMLTableElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLEELEMENT_CELLPADDING: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_CELLPADDING, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_CELLPADDING, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -260,16 +255,16 @@ GetHTMLTableElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLEELEMENT_CELLSPACING: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_CELLSPACING, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_CELLSPACING, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -278,16 +273,16 @@ GetHTMLTableElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLEELEMENT_FRAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_FRAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_FRAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -296,16 +291,16 @@ GetHTMLTableElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLEELEMENT_RULES: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_RULES, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_RULES, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -314,16 +309,16 @@ GetHTMLTableElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLEELEMENT_SUMMARY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_SUMMARY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_SUMMARY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -332,16 +327,16 @@ GetHTMLTableElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLEELEMENT_WIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_WIDTH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_WIDTH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -350,16 +345,16 @@ GetHTMLTableElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -380,24 +375,25 @@ SetHTMLTableElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLTABLEELEMENT_CAPTION: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_CAPTION, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_CAPTION, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLTableCaptionElement* prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&prop, kIHTMLTableCaptionElementIID, "HTMLTableCaptionElement", cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } a->SetCaption(prop); @@ -407,15 +403,15 @@ SetHTMLTableElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLTABLEELEMENT_THEAD: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_THEAD, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_THEAD, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLTableSectionElement* prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&prop, kIHTMLTableSectionElementIID, "HTMLTableSectionElement", cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } a->SetTHead(prop); @@ -425,15 +421,15 @@ SetHTMLTableElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLTABLEELEMENT_TFOOT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_TFOOT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_TFOOT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLTableSectionElement* prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&prop, kIHTMLTableSectionElementIID, "HTMLTableSectionElement", cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } a->SetTFoot(prop); @@ -443,9 +439,9 @@ SetHTMLTableElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLTABLEELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_ALIGN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_ALIGN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -457,9 +453,9 @@ SetHTMLTableElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLTABLEELEMENT_BGCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_BGCOLOR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_BGCOLOR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -471,9 +467,9 @@ SetHTMLTableElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLTABLEELEMENT_BORDER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_BORDER, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_BORDER, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -485,9 +481,9 @@ SetHTMLTableElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLTABLEELEMENT_CELLPADDING: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_CELLPADDING, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_CELLPADDING, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -499,9 +495,9 @@ SetHTMLTableElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLTABLEELEMENT_CELLSPACING: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_CELLSPACING, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_CELLSPACING, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -513,9 +509,9 @@ SetHTMLTableElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLTABLEELEMENT_FRAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_FRAME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_FRAME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -527,9 +523,9 @@ SetHTMLTableElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLTABLEELEMENT_RULES: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_RULES, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_RULES, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -541,9 +537,9 @@ SetHTMLTableElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLTABLEELEMENT_SUMMARY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_SUMMARY, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_SUMMARY, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -555,9 +551,9 @@ SetHTMLTableElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLTABLEELEMENT_WIDTH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_WIDTH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_WIDTH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -567,11 +563,11 @@ SetHTMLTableElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -617,22 +613,6 @@ HTMLTableElementCreateTHead(JSContext *cx, JSObject *obj, uintN argc, jsval *arg nsIDOMHTMLTableElement *nativeThis = (nsIDOMHTMLTableElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsIDOMHTMLElement* nativeRet; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_CREATETHEAD, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -640,12 +620,29 @@ HTMLTableElementCreateTHead(JSContext *cx, JSObject *obj, uintN argc, jsval *arg { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_CREATETHEAD, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->CreateTHead(&nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -660,22 +657,6 @@ HTMLTableElementDeleteTHead(JSContext *cx, JSObject *obj, uintN argc, jsval *arg { nsIDOMHTMLTableElement *nativeThis = (nsIDOMHTMLTableElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_DELETETHEAD, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -683,9 +664,26 @@ HTMLTableElementDeleteTHead(JSContext *cx, JSObject *obj, uintN argc, jsval *arg { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_DELETETHEAD, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->DeleteTHead(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -704,22 +702,6 @@ HTMLTableElementCreateTFoot(JSContext *cx, JSObject *obj, uintN argc, jsval *arg nsIDOMHTMLTableElement *nativeThis = (nsIDOMHTMLTableElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsIDOMHTMLElement* nativeRet; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_CREATETFOOT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -727,12 +709,29 @@ HTMLTableElementCreateTFoot(JSContext *cx, JSObject *obj, uintN argc, jsval *arg { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_CREATETFOOT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->CreateTFoot(&nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -747,22 +746,6 @@ HTMLTableElementDeleteTFoot(JSContext *cx, JSObject *obj, uintN argc, jsval *arg { nsIDOMHTMLTableElement *nativeThis = (nsIDOMHTMLTableElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_DELETETFOOT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -770,9 +753,26 @@ HTMLTableElementDeleteTFoot(JSContext *cx, JSObject *obj, uintN argc, jsval *arg { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_DELETETFOOT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->DeleteTFoot(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -791,22 +791,6 @@ HTMLTableElementCreateCaption(JSContext *cx, JSObject *obj, uintN argc, jsval *a nsIDOMHTMLTableElement *nativeThis = (nsIDOMHTMLTableElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsIDOMHTMLElement* nativeRet; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_CREATECAPTION, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -814,12 +798,29 @@ HTMLTableElementCreateCaption(JSContext *cx, JSObject *obj, uintN argc, jsval *a { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_CREATECAPTION, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->CreateCaption(&nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -834,22 +835,6 @@ HTMLTableElementDeleteCaption(JSContext *cx, JSObject *obj, uintN argc, jsval *a { nsIDOMHTMLTableElement *nativeThis = (nsIDOMHTMLTableElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_DELETECAPTION, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -857,9 +842,26 @@ HTMLTableElementDeleteCaption(JSContext *cx, JSObject *obj, uintN argc, jsval *a { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_DELETECAPTION, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->DeleteCaption(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -879,42 +881,43 @@ HTMLTableElementInsertRow(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, nsresult result = NS_OK; nsIDOMHTMLElement* nativeRet; PRInt32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_INSERTROW, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_INSERTROW, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->InsertRow(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -930,39 +933,40 @@ HTMLTableElementDeleteRow(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, nsIDOMHTMLTableElement *nativeThis = (nsIDOMHTMLTableElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; PRInt32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEELEMENT_DELETEROW, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEELEMENT_DELETEROW, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->DeleteRow(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; diff --git a/mozilla/dom/src/html/nsJSHTMLTableRowElement.cpp b/mozilla/dom/src/html/nsJSHTMLTableRowElement.cpp index 5398a9261f2..bece34a8445 100644 --- a/mozilla/dom/src/html/nsJSHTMLTableRowElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLTableRowElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLElement.h" #include "nsIDOMHTMLTableRowElement.h" @@ -46,10 +46,6 @@ static NS_DEFINE_IID(kIHTMLElementIID, NS_IDOMHTMLELEMENT_IID); static NS_DEFINE_IID(kIHTMLTableRowElementIID, NS_IDOMHTMLTABLEROWELEMENT_IID); static NS_DEFINE_IID(kIHTMLCollectionIID, NS_IDOMHTMLCOLLECTION_IID); -NS_DEF_PTR(nsIDOMHTMLElement); -NS_DEF_PTR(nsIDOMHTMLTableRowElement); -NS_DEF_PTR(nsIDOMHTMLCollection); - // // HTMLTableRowElement property ids // @@ -79,18 +75,19 @@ GetHTMLTableRowElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLTABLEROWELEMENT_ROWINDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_ROWINDEX, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_ROWINDEX, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -99,16 +96,16 @@ GetHTMLTableRowElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLEROWELEMENT_SECTIONROWINDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_SECTIONROWINDEX, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_SECTIONROWINDEX, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -117,35 +114,35 @@ GetHTMLTableRowElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLEROWELEMENT_CELLS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_CELLS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_CELLS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLCollection* prop; nsresult result = NS_OK; result = a->GetCells(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLEROWELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_ALIGN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_ALIGN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -154,16 +151,16 @@ GetHTMLTableRowElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLEROWELEMENT_BGCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_BGCOLOR, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_BGCOLOR, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -172,16 +169,16 @@ GetHTMLTableRowElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLEROWELEMENT_CH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_CH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_CH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -190,16 +187,16 @@ GetHTMLTableRowElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLEROWELEMENT_CHOFF: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_CHOFF, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_CHOFF, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -208,16 +205,16 @@ GetHTMLTableRowElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLEROWELEMENT_VALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_VALIGN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_VALIGN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -226,16 +223,16 @@ GetHTMLTableRowElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -256,18 +253,19 @@ SetHTMLTableRowElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLTABLEROWELEMENT_ROWINDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_ROWINDEX, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_ROWINDEX, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -275,7 +273,7 @@ SetHTMLTableRowElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetRowIndex(prop); @@ -285,9 +283,9 @@ SetHTMLTableRowElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp case HTMLTABLEROWELEMENT_SECTIONROWINDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_SECTIONROWINDEX, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_SECTIONROWINDEX, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -295,7 +293,7 @@ SetHTMLTableRowElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetSectionRowIndex(prop); @@ -305,15 +303,15 @@ SetHTMLTableRowElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp case HTMLTABLEROWELEMENT_CELLS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_CELLS, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_CELLS, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLCollection* prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&prop, kIHTMLCollectionIID, "HTMLCollection", cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } a->SetCells(prop); @@ -323,9 +321,9 @@ SetHTMLTableRowElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp case HTMLTABLEROWELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_ALIGN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_ALIGN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -337,9 +335,9 @@ SetHTMLTableRowElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp case HTMLTABLEROWELEMENT_BGCOLOR: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_BGCOLOR, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_BGCOLOR, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -351,9 +349,9 @@ SetHTMLTableRowElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp case HTMLTABLEROWELEMENT_CH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_CH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_CH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -365,9 +363,9 @@ SetHTMLTableRowElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp case HTMLTABLEROWELEMENT_CHOFF: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_CHOFF, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_CHOFF, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -379,9 +377,9 @@ SetHTMLTableRowElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp case HTMLTABLEROWELEMENT_VALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_VALIGN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_VALIGN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -391,11 +389,11 @@ SetHTMLTableRowElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -442,42 +440,43 @@ HTMLTableRowElementInsertCell(JSContext *cx, JSObject *obj, uintN argc, jsval *a nsresult result = NS_OK; nsIDOMHTMLElement* nativeRet; PRInt32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_INSERTCELL, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_INSERTCELL, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->InsertCell(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -493,39 +492,40 @@ HTMLTableRowElementDeleteCell(JSContext *cx, JSObject *obj, uintN argc, jsval *a nsIDOMHTMLTableRowElement *nativeThis = (nsIDOMHTMLTableRowElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; PRInt32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_DELETECELL, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLEROWELEMENT_DELETECELL, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->DeleteCell(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; diff --git a/mozilla/dom/src/html/nsJSHTMLTableSectionElement.cpp b/mozilla/dom/src/html/nsJSHTMLTableSectionElement.cpp index a44ece87777..db547ab19bf 100644 --- a/mozilla/dom/src/html/nsJSHTMLTableSectionElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLTableSectionElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLElement.h" #include "nsIDOMHTMLTableSectionElement.h" @@ -46,10 +46,6 @@ static NS_DEFINE_IID(kIHTMLElementIID, NS_IDOMHTMLELEMENT_IID); static NS_DEFINE_IID(kIHTMLTableSectionElementIID, NS_IDOMHTMLTABLESECTIONELEMENT_IID); static NS_DEFINE_IID(kIHTMLCollectionIID, NS_IDOMHTMLCOLLECTION_IID); -NS_DEF_PTR(nsIDOMHTMLElement); -NS_DEF_PTR(nsIDOMHTMLTableSectionElement); -NS_DEF_PTR(nsIDOMHTMLCollection); - // // HTMLTableSectionElement property ids // @@ -76,18 +72,19 @@ GetHTMLTableSectionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLTABLESECTIONELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLESECTIONELEMENT_ALIGN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLESECTIONELEMENT_ALIGN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -96,16 +93,16 @@ GetHTMLTableSectionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLESECTIONELEMENT_CH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLESECTIONELEMENT_CH, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLESECTIONELEMENT_CH, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -114,16 +111,16 @@ GetHTMLTableSectionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLESECTIONELEMENT_CHOFF: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLESECTIONELEMENT_CHOFF, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLESECTIONELEMENT_CHOFF, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -132,16 +129,16 @@ GetHTMLTableSectionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLESECTIONELEMENT_VALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLESECTIONELEMENT_VALIGN, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLESECTIONELEMENT_VALIGN, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -150,35 +147,35 @@ GetHTMLTableSectionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTABLESECTIONELEMENT_ROWS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLESECTIONELEMENT_ROWS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLESECTIONELEMENT_ROWS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLCollection* prop; nsresult result = NS_OK; result = a->GetRows(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -199,18 +196,19 @@ SetHTMLTableSectionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLTABLESECTIONELEMENT_ALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLESECTIONELEMENT_ALIGN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLESECTIONELEMENT_ALIGN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -222,9 +220,9 @@ SetHTMLTableSectionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval case HTMLTABLESECTIONELEMENT_CH: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLESECTIONELEMENT_CH, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLESECTIONELEMENT_CH, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -236,9 +234,9 @@ SetHTMLTableSectionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval case HTMLTABLESECTIONELEMENT_CHOFF: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLESECTIONELEMENT_CHOFF, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLESECTIONELEMENT_CHOFF, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -250,9 +248,9 @@ SetHTMLTableSectionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval case HTMLTABLESECTIONELEMENT_VALIGN: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLESECTIONELEMENT_VALIGN, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLESECTIONELEMENT_VALIGN, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -262,11 +260,11 @@ SetHTMLTableSectionElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -313,42 +311,43 @@ HTMLTableSectionElementInsertRow(JSContext *cx, JSObject *obj, uintN argc, jsval nsresult result = NS_OK; nsIDOMHTMLElement* nativeRet; PRInt32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLESECTIONELEMENT_INSERTROW, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLESECTIONELEMENT_INSERTROW, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->InsertRow(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -364,39 +363,40 @@ HTMLTableSectionElementDeleteRow(JSContext *cx, JSObject *obj, uintN argc, jsval nsIDOMHTMLTableSectionElement *nativeThis = (nsIDOMHTMLTableSectionElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; PRInt32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTABLESECTIONELEMENT_DELETEROW, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTABLESECTIONELEMENT_DELETEROW, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->DeleteRow(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; diff --git a/mozilla/dom/src/html/nsJSHTMLTextAreaElement.cpp b/mozilla/dom/src/html/nsJSHTMLTextAreaElement.cpp index d8ba4096f67..61f3a0d3c4d 100644 --- a/mozilla/dom/src/html/nsJSHTMLTextAreaElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLTextAreaElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLFormElement.h" #include "nsIDOMNSHTMLTextAreaElement.h" @@ -48,11 +48,6 @@ static NS_DEFINE_IID(kINSHTMLTextAreaElementIID, NS_IDOMNSHTMLTEXTAREAELEMENT_II static NS_DEFINE_IID(kIHTMLTextAreaElementIID, NS_IDOMHTMLTEXTAREAELEMENT_IID); static NS_DEFINE_IID(kIControllersIID, NS_ICONTROLLERS_IID); -NS_DEF_PTR(nsIDOMHTMLFormElement); -NS_DEF_PTR(nsIDOMNSHTMLTextAreaElement); -NS_DEF_PTR(nsIDOMHTMLTextAreaElement); -NS_DEF_PTR(nsIControllers); - // // HTMLTextAreaElement property ids // @@ -86,18 +81,19 @@ GetHTMLTextAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLTEXTAREAELEMENT_DEFAULTVALUE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_DEFAULTVALUE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_DEFAULTVALUE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -106,35 +102,35 @@ GetHTMLTextAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTEXTAREAELEMENT_FORM: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_FORM, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_FORM, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMHTMLFormElement* prop; nsresult result = NS_OK; result = a->GetForm(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTEXTAREAELEMENT_ACCESSKEY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_ACCESSKEY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_ACCESSKEY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -143,16 +139,16 @@ GetHTMLTextAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTEXTAREAELEMENT_COLS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_COLS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_COLS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -161,16 +157,16 @@ GetHTMLTextAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTEXTAREAELEMENT_DISABLED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_DISABLED, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_DISABLED, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -179,16 +175,16 @@ GetHTMLTextAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTEXTAREAELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_NAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_NAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -197,16 +193,16 @@ GetHTMLTextAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTEXTAREAELEMENT_READONLY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_READONLY, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_READONLY, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -215,16 +211,16 @@ GetHTMLTextAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTEXTAREAELEMENT_ROWS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_ROWS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_ROWS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -233,16 +229,16 @@ GetHTMLTextAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTEXTAREAELEMENT_TABINDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_TABINDEX, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_TABINDEX, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -251,16 +247,16 @@ GetHTMLTextAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTEXTAREAELEMENT_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_TYPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_TYPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -269,16 +265,16 @@ GetHTMLTextAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLTEXTAREAELEMENT_VALUE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_VALUE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_VALUE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -287,16 +283,16 @@ GetHTMLTextAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case NSHTMLTEXTAREAELEMENT_CONTROLLERS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSHTMLTEXTAREAELEMENT_CONTROLLERS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSHTMLTEXTAREAELEMENT_CONTROLLERS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIControllers* prop; nsIDOMNSHTMLTextAreaElement* b; @@ -305,25 +301,25 @@ GetHTMLTextAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp result = b->GetControllers(&prop); if(NS_SUCCEEDED(result)) { // get the js object; n.b., this will do a release on 'prop' - nsJSUtils::nsConvertXPCObjectToJSVal(prop, nsIControllers::GetIID(), cx, vp); + nsJSUtils::nsConvertXPCObjectToJSVal(prop, nsIControllers::GetIID(), cx, obj, vp); NS_RELEASE(b); } else { NS_RELEASE(b); - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -344,18 +340,19 @@ SetHTMLTextAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLTEXTAREAELEMENT_DEFAULTVALUE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_DEFAULTVALUE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_DEFAULTVALUE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -367,9 +364,9 @@ SetHTMLTextAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp case HTMLTEXTAREAELEMENT_ACCESSKEY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_ACCESSKEY, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_ACCESSKEY, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -381,9 +378,9 @@ SetHTMLTextAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp case HTMLTEXTAREAELEMENT_COLS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_COLS, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_COLS, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -391,7 +388,7 @@ SetHTMLTextAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetCols(prop); @@ -401,13 +398,13 @@ SetHTMLTextAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp case HTMLTEXTAREAELEMENT_DISABLED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_DISABLED, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_DISABLED, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetDisabled(prop); @@ -417,9 +414,9 @@ SetHTMLTextAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp case HTMLTEXTAREAELEMENT_NAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_NAME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_NAME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -431,13 +428,13 @@ SetHTMLTextAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp case HTMLTEXTAREAELEMENT_READONLY: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_READONLY, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_READONLY, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetReadOnly(prop); @@ -447,9 +444,9 @@ SetHTMLTextAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp case HTMLTEXTAREAELEMENT_ROWS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_ROWS, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_ROWS, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -457,7 +454,7 @@ SetHTMLTextAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetRows(prop); @@ -467,9 +464,9 @@ SetHTMLTextAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp case HTMLTEXTAREAELEMENT_TABINDEX: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_TABINDEX, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_TABINDEX, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; int32 temp; @@ -477,7 +474,7 @@ SetHTMLTextAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp prop = (PRInt32)temp; } else { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } a->SetTabIndex(prop); @@ -487,9 +484,9 @@ SetHTMLTextAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp case HTMLTEXTAREAELEMENT_VALUE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_VALUE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_VALUE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -499,11 +496,11 @@ SetHTMLTextAreaElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -548,22 +545,6 @@ HTMLTextAreaElementBlur(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, j { nsIDOMHTMLTextAreaElement *nativeThis = (nsIDOMHTMLTextAreaElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_BLUR, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -571,9 +552,26 @@ HTMLTextAreaElementBlur(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, j { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_BLUR, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Blur(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -591,22 +589,6 @@ HTMLTextAreaElementFocus(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, { nsIDOMHTMLTextAreaElement *nativeThis = (nsIDOMHTMLTextAreaElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_FOCUS, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -614,9 +596,26 @@ HTMLTextAreaElementFocus(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_FOCUS, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Focus(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -634,22 +633,6 @@ HTMLTextAreaElementSelect(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, { nsIDOMHTMLTextAreaElement *nativeThis = (nsIDOMHTMLTextAreaElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_SELECT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -657,9 +640,26 @@ HTMLTextAreaElementSelect(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTEXTAREAELEMENT_SELECT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Select(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; diff --git a/mozilla/dom/src/html/nsJSHTMLTitleElement.cpp b/mozilla/dom/src/html/nsJSHTMLTitleElement.cpp index fbd6e404a74..a3fda845d78 100644 --- a/mozilla/dom/src/html/nsJSHTMLTitleElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLTitleElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLTitleElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLTitleElementIID, NS_IDOMHTMLTITLEELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLTitleElement); - // // HTMLTitleElement property ids // @@ -66,18 +64,19 @@ GetHTMLTitleElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLTITLEELEMENT_TEXT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTITLEELEMENT_TEXT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTITLEELEMENT_TEXT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -86,16 +85,16 @@ GetHTMLTitleElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -116,18 +115,19 @@ SetHTMLTitleElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLTITLEELEMENT_TEXT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLTITLEELEMENT_TEXT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLTITLEELEMENT_TEXT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -137,11 +137,11 @@ SetHTMLTitleElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/html/nsJSHTMLUListElement.cpp b/mozilla/dom/src/html/nsJSHTMLUListElement.cpp index 3318a1a3b8a..667d681a8f3 100644 --- a/mozilla/dom/src/html/nsJSHTMLUListElement.cpp +++ b/mozilla/dom/src/html/nsJSHTMLUListElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMHTMLUListElement.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIHTMLUListElementIID, NS_IDOMHTMLULISTELEMENT_IID); -NS_DEF_PTR(nsIDOMHTMLUListElement); - // // HTMLUListElement property ids // @@ -67,18 +65,19 @@ GetHTMLUListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLULISTELEMENT_COMPACT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLULISTELEMENT_COMPACT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLULISTELEMENT_COMPACT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -87,16 +86,16 @@ GetHTMLUListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case HTMLULISTELEMENT_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLULISTELEMENT_TYPE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLULISTELEMENT_TYPE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -105,16 +104,16 @@ GetHTMLUListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -135,22 +134,23 @@ SetHTMLUListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case HTMLULISTELEMENT_COMPACT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLULISTELEMENT_COMPACT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLULISTELEMENT_COMPACT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } a->SetCompact(prop); @@ -160,9 +160,9 @@ SetHTMLUListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case HTMLULISTELEMENT_TYPE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_HTMLULISTELEMENT_TYPE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_HTMLULISTELEMENT_TYPE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -172,11 +172,11 @@ SetHTMLUListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/dom/src/range/nsJSRange.cpp b/mozilla/dom/src/range/nsJSRange.cpp index c2754f716e7..c704eb3831e 100644 --- a/mozilla/dom/src/range/nsJSRange.cpp +++ b/mozilla/dom/src/range/nsJSRange.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMNode.h" #include "nsIDOMNSRange.h" @@ -48,11 +48,6 @@ static NS_DEFINE_IID(kINSRangeIID, NS_IDOMNSRANGE_IID); static NS_DEFINE_IID(kIDocumentFragmentIID, NS_IDOMDOCUMENTFRAGMENT_IID); static NS_DEFINE_IID(kIRangeIID, NS_IDOMRANGE_IID); -NS_DEF_PTR(nsIDOMNode); -NS_DEF_PTR(nsIDOMNSRange); -NS_DEF_PTR(nsIDOMDocumentFragment); -NS_DEF_PTR(nsIDOMRange); - // // Range property ids // @@ -80,37 +75,38 @@ GetRangeProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case RANGE_STARTPARENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_RANGE_STARTPARENT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_RANGE_STARTPARENT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNode* prop; nsresult result = NS_OK; result = a->GetStartParent(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case RANGE_STARTOFFSET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_RANGE_STARTOFFSET, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_RANGE_STARTOFFSET, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -119,35 +115,35 @@ GetRangeProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case RANGE_ENDPARENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_RANGE_ENDPARENT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_RANGE_ENDPARENT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNode* prop; nsresult result = NS_OK; result = a->GetEndParent(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case RANGE_ENDOFFSET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_RANGE_ENDOFFSET, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_RANGE_ENDOFFSET, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -156,16 +152,16 @@ GetRangeProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case RANGE_ISCOLLAPSED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_RANGE_ISCOLLAPSED, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_RANGE_ISCOLLAPSED, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -174,35 +170,35 @@ GetRangeProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case RANGE_COMMONPARENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_RANGE_COMMONPARENT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_RANGE_COMMONPARENT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNode* prop; nsresult result = NS_OK; result = a->GetCommonParent(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -223,19 +219,20 @@ SetRangeProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -280,48 +277,49 @@ RangeSetStart(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval { nsIDOMRange *nativeThis = (nsIDOMRange*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMNodePtr b0; + nsCOMPtr b0; PRInt32 b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_RANGE_SETSTART, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_RANGE_SETSTART, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kINodeIID, "Node", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } if (!JS_ValueToInt32(cx, argv[1], (int32 *)&b1)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->SetStart(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -339,44 +337,45 @@ RangeSetStartBefore(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval { nsIDOMRange *nativeThis = (nsIDOMRange*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMNodePtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_RANGE_SETSTARTBEFORE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_RANGE_SETSTARTBEFORE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kINodeIID, "Node", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->SetStartBefore(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -394,44 +393,45 @@ RangeSetStartAfter(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval { nsIDOMRange *nativeThis = (nsIDOMRange*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMNodePtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_RANGE_SETSTARTAFTER, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_RANGE_SETSTARTAFTER, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kINodeIID, "Node", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->SetStartAfter(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -449,48 +449,49 @@ RangeSetEnd(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMRange *nativeThis = (nsIDOMRange*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMNodePtr b0; + nsCOMPtr b0; PRInt32 b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_RANGE_SETEND, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_RANGE_SETEND, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kINodeIID, "Node", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } if (!JS_ValueToInt32(cx, argv[1], (int32 *)&b1)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->SetEnd(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -508,44 +509,45 @@ RangeSetEndBefore(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval * { nsIDOMRange *nativeThis = (nsIDOMRange*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMNodePtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_RANGE_SETENDBEFORE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_RANGE_SETENDBEFORE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kINodeIID, "Node", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->SetEndBefore(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -563,44 +565,45 @@ RangeSetEndAfter(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r { nsIDOMRange *nativeThis = (nsIDOMRange*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMNodePtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_RANGE_SETENDAFTER, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_RANGE_SETENDAFTER, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kINodeIID, "Node", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->SetEndAfter(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -619,39 +622,40 @@ RangeCollapse(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval nsIDOMRange *nativeThis = (nsIDOMRange*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; PRBool b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_RANGE_COLLAPSE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_RANGE_COLLAPSE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!nsJSUtils::nsConvertJSValToBool(&b0, cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } result = nativeThis->Collapse(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -669,44 +673,45 @@ RangeSelectNode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rv { nsIDOMRange *nativeThis = (nsIDOMRange*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMNodePtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_RANGE_SELECTNODE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_RANGE_SELECTNODE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kINodeIID, "Node", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->SelectNode(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -724,44 +729,45 @@ RangeSelectNodeContents(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, j { nsIDOMRange *nativeThis = (nsIDOMRange*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMNodePtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_RANGE_SELECTNODECONTENTS, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_RANGE_SELECTNODECONTENTS, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kINodeIID, "Node", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->SelectNodeContents(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -781,47 +787,48 @@ RangeCompareEndPoints(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsv nsresult result = NS_OK; PRInt32 nativeRet; PRUint32 b0; - nsIDOMRangePtr b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_RANGE_COMPAREENDPOINTS, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b1; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_RANGE_COMPAREENDPOINTS, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b1, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b1), kIRangeIID, "Range", cx, argv[1])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->CompareEndPoints(b0, b1, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = INT_TO_JSVAL(nativeRet); @@ -839,22 +846,6 @@ RangeDeleteContents(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval { nsIDOMRange *nativeThis = (nsIDOMRange*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_RANGE_DELETECONTENTS, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -862,9 +853,26 @@ RangeDeleteContents(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_RANGE_DELETECONTENTS, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->DeleteContents(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -883,22 +891,6 @@ RangeExtractContents(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsva nsIDOMRange *nativeThis = (nsIDOMRange*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsIDOMDocumentFragment* nativeRet; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_RANGE_EXTRACTCONTENTS, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -906,12 +898,29 @@ RangeExtractContents(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsva { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_RANGE_EXTRACTCONTENTS, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->ExtractContents(&nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -927,22 +936,6 @@ RangeCloneContents(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval nsIDOMRange *nativeThis = (nsIDOMRange*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsIDOMDocumentFragment* nativeRet; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_RANGE_CLONECONTENTS, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -950,12 +943,29 @@ RangeCloneContents(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_RANGE_CLONECONTENTS, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->CloneContents(&nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -970,44 +980,45 @@ RangeInsertNode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rv { nsIDOMRange *nativeThis = (nsIDOMRange*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMNodePtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_RANGE_INSERTNODE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_RANGE_INSERTNODE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kINodeIID, "Node", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->InsertNode(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -1025,44 +1036,45 @@ RangeSurroundContents(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsv { nsIDOMRange *nativeThis = (nsIDOMRange*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMNodePtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_RANGE_SURROUNDCONTENTS, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_RANGE_SURROUNDCONTENTS, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kINodeIID, "Node", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->SurroundContents(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -1081,22 +1093,6 @@ RangeClone(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) nsIDOMRange *nativeThis = (nsIDOMRange*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsIDOMRange* nativeRet; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_RANGE_CLONE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -1104,12 +1100,29 @@ RangeClone(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_RANGE_CLONE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Clone(&nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -1125,22 +1138,6 @@ RangeToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval nsIDOMRange *nativeThis = (nsIDOMRange*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsAutoString nativeRet; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_RANGE_TOSTRING, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -1148,9 +1145,26 @@ RangeToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_RANGE_TOSTRING, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->ToString(nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } nsJSUtils::nsConvertStringToJSVal(nativeRet, cx, rval); @@ -1167,48 +1181,49 @@ PR_STATIC_CALLBACK(JSBool) NSRangeCreateContextualFragment(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMRange *privateThis = (nsIDOMRange*)nsJSUtils::nsGetNativeThis(cx, obj); - nsIDOMNSRangePtr nativeThis = nsnull; + nsCOMPtr nativeThis; nsresult result = NS_OK; - if (NS_OK != privateThis->QueryInterface(kINSRangeIID, (void **)&nativeThis)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + if (NS_OK != privateThis->QueryInterface(kINSRangeIID, getter_AddRefs(nativeThis))) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } nsIDOMDocumentFragment* nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSRANGE_CREATECONTEXTUALFRAGMENT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore - if (nsnull == nativeThis) { + if (!nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSRANGE_CREATECONTEXTUALFRAGMENT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->CreateContextualFragment(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -1222,45 +1237,46 @@ PR_STATIC_CALLBACK(JSBool) NSRangeIsValidFragment(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsIDOMRange *privateThis = (nsIDOMRange*)nsJSUtils::nsGetNativeThis(cx, obj); - nsIDOMNSRangePtr nativeThis = nsnull; + nsCOMPtr nativeThis; nsresult result = NS_OK; - if (NS_OK != privateThis->QueryInterface(kINSRangeIID, (void **)&nativeThis)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR); + if (NS_OK != privateThis->QueryInterface(kINSRangeIID, getter_AddRefs(nativeThis))) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR); } PRBool nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_NSRANGE_ISVALIDFRAGMENT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore - if (nsnull == nativeThis) { + if (!nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSRANGE_ISVALIDFRAGMENT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->IsValidFragment(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = BOOLEAN_TO_JSVAL(nativeRet); diff --git a/mozilla/dom/src/range/nsJSSelection.cpp b/mozilla/dom/src/range/nsJSSelection.cpp index ed9bfe957e9..e05d65aca20 100644 --- a/mozilla/dom/src/range/nsJSSelection.cpp +++ b/mozilla/dom/src/range/nsJSSelection.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMSelection.h" #include "nsIDOMNode.h" @@ -50,12 +50,6 @@ static NS_DEFINE_IID(kISelectionListenerIID, NS_IDOMSELECTIONLISTENER_IID); static NS_DEFINE_IID(kIEnumeratorIID, NS_IENUMERATOR_IID); static NS_DEFINE_IID(kIRangeIID, NS_IDOMRANGE_IID); -NS_DEF_PTR(nsIDOMSelection); -NS_DEF_PTR(nsIDOMNode); -NS_DEF_PTR(nsIDOMSelectionListener); -NS_DEF_PTR(nsIEnumerator); -NS_DEF_PTR(nsIDOMRange); - // // Selection property ids // @@ -83,37 +77,38 @@ GetSelectionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case SELECTION_ANCHORNODE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SELECTION_ANCHORNODE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SELECTION_ANCHORNODE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNode* prop; nsresult result = NS_OK; result = a->GetAnchorNode(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case SELECTION_ANCHOROFFSET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SELECTION_ANCHOROFFSET, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SELECTION_ANCHOROFFSET, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -122,35 +117,35 @@ GetSelectionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case SELECTION_FOCUSNODE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SELECTION_FOCUSNODE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SELECTION_FOCUSNODE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNode* prop; nsresult result = NS_OK; result = a->GetFocusNode(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case SELECTION_FOCUSOFFSET: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SELECTION_FOCUSOFFSET, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SELECTION_FOCUSOFFSET, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -159,16 +154,16 @@ GetSelectionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case SELECTION_ISCOLLAPSED: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SELECTION_ISCOLLAPSED, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SELECTION_ISCOLLAPSED, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRBool prop; nsresult result = NS_OK; @@ -177,16 +172,16 @@ GetSelectionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = BOOLEAN_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case SELECTION_RANGECOUNT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SELECTION_RANGECOUNT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SELECTION_RANGECOUNT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } PRInt32 prop; nsresult result = NS_OK; @@ -195,16 +190,16 @@ GetSelectionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(prop); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -225,19 +220,20 @@ SetSelectionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -284,42 +280,43 @@ SelectionGetRangeAt(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval nsresult result = NS_OK; nsIDOMRange* nativeRet; PRInt32 b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SELECTION_GETRANGEAT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SELECTION_GETRANGEAT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } if (!JS_ValueToInt32(cx, argv[0], (int32 *)&b0)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->GetRangeAt(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -334,22 +331,6 @@ SelectionClearSelection(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, j { nsIDOMSelection *nativeThis = (nsIDOMSelection*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SELECTION_CLEARSELECTION, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -357,9 +338,26 @@ SelectionClearSelection(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, j { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SELECTION_CLEARSELECTION, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->ClearSelection(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -377,48 +375,49 @@ SelectionCollapse(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval * { nsIDOMSelection *nativeThis = (nsIDOMSelection*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMNodePtr b0; + nsCOMPtr b0; PRInt32 b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SELECTION_COLLAPSE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SELECTION_COLLAPSE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kINodeIID, "Node", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } if (!JS_ValueToInt32(cx, argv[1], (int32 *)&b1)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->Collapse(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -436,48 +435,49 @@ SelectionExtend(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rv { nsIDOMSelection *nativeThis = (nsIDOMSelection*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMNodePtr b0; + nsCOMPtr b0; PRInt32 b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SELECTION_EXTEND, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SELECTION_EXTEND, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kINodeIID, "Node", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } if (!JS_ValueToInt32(cx, argv[1], (int32 *)&b1)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR); } result = nativeThis->Extend(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -495,22 +495,6 @@ SelectionCollapseToStart(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, { nsIDOMSelection *nativeThis = (nsIDOMSelection*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SELECTION_COLLAPSETOSTART, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -518,9 +502,26 @@ SelectionCollapseToStart(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SELECTION_COLLAPSETOSTART, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->CollapseToStart(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -538,22 +539,6 @@ SelectionCollapseToEnd(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, js { nsIDOMSelection *nativeThis = (nsIDOMSelection*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SELECTION_COLLAPSETOEND, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -561,9 +546,26 @@ SelectionCollapseToEnd(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, js { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SELECTION_COLLAPSETOEND, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->CollapseToEnd(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -582,48 +584,49 @@ SelectionContainsNode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsv nsIDOMSelection *nativeThis = (nsIDOMSelection*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; PRBool nativeRet; - nsIDOMNodePtr b0; + nsCOMPtr b0; PRBool b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SELECTION_CONTAINSNODE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SELECTION_CONTAINSNODE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kINodeIID, "Node", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } if (!nsJSUtils::nsConvertJSValToBool(&b1, cx, argv[1])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR); } result = nativeThis->ContainsNode(b0, b1, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = BOOLEAN_TO_JSVAL(nativeRet); @@ -641,22 +644,6 @@ SelectionDeleteFromDocument(JSContext *cx, JSObject *obj, uintN argc, jsval *arg { nsIDOMSelection *nativeThis = (nsIDOMSelection*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SELECTION_DELETEFROMDOCUMENT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -664,9 +651,26 @@ SelectionDeleteFromDocument(JSContext *cx, JSObject *obj, uintN argc, jsval *arg { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SELECTION_DELETEFROMDOCUMENT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->DeleteFromDocument(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -684,44 +688,45 @@ SelectionAddRange(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval * { nsIDOMSelection *nativeThis = (nsIDOMSelection*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMRangePtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SELECTION_ADDRANGE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SELECTION_ADDRANGE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIRangeIID, "Range", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->AddRange(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -739,22 +744,6 @@ SelectionStartBatchChanges(JSContext *cx, JSObject *obj, uintN argc, jsval *argv { nsIDOMSelection *nativeThis = (nsIDOMSelection*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SELECTION_STARTBATCHCHANGES, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -762,9 +751,26 @@ SelectionStartBatchChanges(JSContext *cx, JSObject *obj, uintN argc, jsval *argv { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SELECTION_STARTBATCHCHANGES, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->StartBatchChanges(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -782,22 +788,6 @@ SelectionEndBatchChanges(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, { nsIDOMSelection *nativeThis = (nsIDOMSelection*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SELECTION_ENDBATCHCHANGES, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -805,9 +795,26 @@ SelectionEndBatchChanges(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SELECTION_ENDBATCHCHANGES, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->EndBatchChanges(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -825,44 +832,45 @@ SelectionAddSelectionListener(JSContext *cx, JSObject *obj, uintN argc, jsval *a { nsIDOMSelection *nativeThis = (nsIDOMSelection*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMSelectionListenerPtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SELECTION_ADDSELECTIONLISTENER, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SELECTION_ADDSELECTIONLISTENER, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kISelectionListenerIID, "SelectionListener", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->AddSelectionListener(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -880,44 +888,45 @@ SelectionRemoveSelectionListener(JSContext *cx, JSObject *obj, uintN argc, jsval { nsIDOMSelection *nativeThis = (nsIDOMSelection*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMSelectionListenerPtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SELECTION_REMOVESELECTIONLISTENER, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SELECTION_REMOVESELECTIONLISTENER, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kISelectionListenerIID, "SelectionListener", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->RemoveSelectionListener(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -936,22 +945,6 @@ SelectionToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval * nsIDOMSelection *nativeThis = (nsIDOMSelection*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsAutoString nativeRet; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SELECTION_TOSTRING, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -959,9 +952,26 @@ SelectionToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval * { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SELECTION_TOSTRING, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->ToString(nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } nsJSUtils::nsConvertStringToJSVal(nativeRet, cx, rval); diff --git a/mozilla/dom/src/range/nsJSSelectionListener.cpp b/mozilla/dom/src/range/nsJSSelectionListener.cpp index ba4775b19d0..5fd99fe7eec 100644 --- a/mozilla/dom/src/range/nsJSSelectionListener.cpp +++ b/mozilla/dom/src/range/nsJSSelectionListener.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMSelectionListener.h" @@ -42,8 +42,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kISelectionListenerIID, NS_IDOMSELECTIONLISTENER_IID); -NS_DEF_PTR(nsIDOMSelectionListener); - /***********************************************************************/ // @@ -60,19 +58,20 @@ GetSelectionListenerProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -93,19 +92,20 @@ SetSelectionListenerProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -150,22 +150,6 @@ SelectionListenerNotifySelectionChanged(JSContext *cx, JSObject *obj, uintN argc { nsIDOMSelectionListener *nativeThis = (nsIDOMSelectionListener*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_SELECTIONLISTENER_NOTIFYSELECTIONCHANGED, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -173,9 +157,26 @@ SelectionListenerNotifySelectionChanged(JSContext *cx, JSObject *obj, uintN argc { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_SELECTIONLISTENER_NOTIFYSELECTIONCHANGED, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->NotifySelectionChanged(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; diff --git a/mozilla/dom/src/xul/nsJSXULCommandDispatcher.cpp b/mozilla/dom/src/xul/nsJSXULCommandDispatcher.cpp index aa8c24d4716..82b02542959 100644 --- a/mozilla/dom/src/xul/nsJSXULCommandDispatcher.cpp +++ b/mozilla/dom/src/xul/nsJSXULCommandDispatcher.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIController.h" #include "nsIDOMElement.h" @@ -50,12 +50,6 @@ static NS_DEFINE_IID(kIXULCommandDispatcherIID, NS_IDOMXULCOMMANDDISPATCHER_IID) static NS_DEFINE_IID(kIWindowIID, NS_IDOMWINDOW_IID); static NS_DEFINE_IID(kIControllersIID, NS_ICONTROLLERS_IID); -NS_DEF_PTR(nsIController); -NS_DEF_PTR(nsIDOMElement); -NS_DEF_PTR(nsIDOMXULCommandDispatcher); -NS_DEF_PTR(nsIDOMWindow); -NS_DEF_PTR(nsIControllers); - // // XULCommandDispatcher property ids // @@ -79,56 +73,57 @@ GetXULCommandDispatcherProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case XULCOMMANDDISPATCHER_FOCUSEDELEMENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_FOCUSEDELEMENT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_FOCUSEDELEMENT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMElement* prop; nsresult result = NS_OK; result = a->GetFocusedElement(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case XULCOMMANDDISPATCHER_FOCUSEDWINDOW: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_FOCUSEDWINDOW, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_FOCUSEDWINDOW, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMWindow* prop; nsresult result = NS_OK; result = a->GetFocusedWindow(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -149,24 +144,25 @@ SetXULCommandDispatcherProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case XULCOMMANDDISPATCHER_FOCUSEDELEMENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_FOCUSEDELEMENT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_FOCUSEDELEMENT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMElement* prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&prop, kIElementIID, "Element", cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } a->SetFocusedElement(prop); @@ -176,15 +172,15 @@ SetXULCommandDispatcherProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v case XULCOMMANDDISPATCHER_FOCUSEDWINDOW: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_FOCUSEDWINDOW, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_FOCUSEDWINDOW, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMWindow* prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&prop, kIWindowIID, "Window", cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } a->SetFocusedWindow(prop); @@ -192,11 +188,11 @@ SetXULCommandDispatcherProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -241,48 +237,49 @@ XULCommandDispatcherAddCommandUpdater(JSContext *cx, JSObject *obj, uintN argc, { nsIDOMXULCommandDispatcher *nativeThis = (nsIDOMXULCommandDispatcher*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMElementPtr b0; + nsCOMPtr b0; nsAutoString b1; nsAutoString b2; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_ADDCOMMANDUPDATER, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_ADDCOMMANDUPDATER, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 3) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIElementIID, "Element", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } nsJSUtils::nsConvertJSValToString(b1, cx, argv[1]); nsJSUtils::nsConvertJSValToString(b2, cx, argv[2]); result = nativeThis->AddCommandUpdater(b0, b1, b2); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -300,44 +297,45 @@ XULCommandDispatcherRemoveCommandUpdater(JSContext *cx, JSObject *obj, uintN arg { nsIDOMXULCommandDispatcher *nativeThis = (nsIDOMXULCommandDispatcher*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMElementPtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_REMOVECOMMANDUPDATER, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_REMOVECOMMANDUPDATER, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIElementIID, "Element", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->RemoveCommandUpdater(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -356,37 +354,38 @@ XULCommandDispatcherUpdateCommands(JSContext *cx, JSObject *obj, uintN argc, jsv nsIDOMXULCommandDispatcher *nativeThis = (nsIDOMXULCommandDispatcher*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_UPDATECOMMANDS, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_UPDATECOMMANDS, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->UpdateCommands(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -406,41 +405,42 @@ XULCommandDispatcherGetControllerForCommand(JSContext *cx, JSObject *obj, uintN nsresult result = NS_OK; nsIController* nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_GETCONTROLLERFORCOMMAND, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_GETCONTROLLERFORCOMMAND, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->GetControllerForCommand(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } // n.b., this will release nativeRet - nsJSUtils::nsConvertXPCObjectToJSVal(nativeRet, nsIController::GetIID(), cx, rval); + nsJSUtils::nsConvertXPCObjectToJSVal(nativeRet, nsIController::GetIID(), cx, obj, rval); } return JS_TRUE; @@ -456,22 +456,6 @@ XULCommandDispatcherGetControllers(JSContext *cx, JSObject *obj, uintN argc, jsv nsIDOMXULCommandDispatcher *nativeThis = (nsIDOMXULCommandDispatcher*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsIControllers* nativeRet; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_GETCONTROLLERS, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -479,13 +463,30 @@ XULCommandDispatcherGetControllers(JSContext *cx, JSObject *obj, uintN argc, jsv { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_GETCONTROLLERS, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->GetControllers(&nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } // n.b., this will release nativeRet - nsJSUtils::nsConvertXPCObjectToJSVal(nativeRet, nsIControllers::GetIID(), cx, rval); + nsJSUtils::nsConvertXPCObjectToJSVal(nativeRet, nsIControllers::GetIID(), cx, obj, rval); } return JS_TRUE; diff --git a/mozilla/dom/src/xul/nsJSXULDocument.cpp b/mozilla/dom/src/xul/nsJSXULDocument.cpp index db84f7e3c22..10f5daf6313 100644 --- a/mozilla/dom/src/xul/nsJSXULDocument.cpp +++ b/mozilla/dom/src/xul/nsJSXULDocument.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMElement.h" #include "nsIDOMNode.h" @@ -50,12 +50,6 @@ static NS_DEFINE_IID(kIXULCommandDispatcherIID, NS_IDOMXULCOMMANDDISPATCHER_IID) static NS_DEFINE_IID(kIXULDocumentIID, NS_IDOMXULDOCUMENT_IID); static NS_DEFINE_IID(kINodeListIID, NS_IDOMNODELIST_IID); -NS_DEF_PTR(nsIDOMElement); -NS_DEF_PTR(nsIDOMNode); -NS_DEF_PTR(nsIDOMXULCommandDispatcher); -NS_DEF_PTR(nsIDOMXULDocument); -NS_DEF_PTR(nsIDOMNodeList); - // // XULDocument property ids // @@ -80,75 +74,76 @@ GetXULDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case XULDOCUMENT_POPUPNODE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULDOCUMENT_POPUPNODE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULDOCUMENT_POPUPNODE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNode* prop; nsresult result = NS_OK; result = a->GetPopupNode(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case XULDOCUMENT_TOOLTIPNODE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULDOCUMENT_TOOLTIPNODE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULDOCUMENT_TOOLTIPNODE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNode* prop; nsresult result = NS_OK; result = a->GetTooltipNode(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case XULDOCUMENT_COMMANDDISPATCHER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULDOCUMENT_COMMANDDISPATCHER, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULDOCUMENT_COMMANDDISPATCHER, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMXULCommandDispatcher* prop; nsresult result = NS_OK; result = a->GetCommandDispatcher(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -169,24 +164,25 @@ SetXULDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case XULDOCUMENT_POPUPNODE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULDOCUMENT_POPUPNODE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULDOCUMENT_POPUPNODE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNode* prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&prop, kINodeIID, "Node", cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } a->SetPopupNode(prop); @@ -196,15 +192,15 @@ SetXULDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case XULDOCUMENT_TOOLTIPNODE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULDOCUMENT_TOOLTIPNODE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULDOCUMENT_TOOLTIPNODE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNode* prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&prop, kINodeIID, "Node", cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } a->SetTooltipNode(prop); @@ -212,11 +208,11 @@ SetXULDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -263,40 +259,41 @@ XULDocumentGetElementById(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, nsresult result = NS_OK; nsIDOMElement* nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULDOCUMENT_GETELEMENTBYID, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULDOCUMENT_GETELEMENTBYID, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->GetElementById(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -314,30 +311,31 @@ XULDocumentGetElementsByAttribute(JSContext *cx, JSObject *obj, uintN argc, jsva nsIDOMNodeList* nativeRet; nsAutoString b0; nsAutoString b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULDOCUMENT_GETELEMENTSBYATTRIBUTE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULDOCUMENT_GETELEMENTSBYATTRIBUTE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); @@ -345,10 +343,10 @@ XULDocumentGetElementsByAttribute(JSContext *cx, JSObject *obj, uintN argc, jsva result = nativeThis->GetElementsByAttribute(b0, b1, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -365,30 +363,31 @@ XULDocumentPersist(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval nsresult result = NS_OK; nsAutoString b0; nsAutoString b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULDOCUMENT_PERSIST, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULDOCUMENT_PERSIST, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); @@ -396,7 +395,7 @@ XULDocumentPersist(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval result = nativeThis->Persist(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; diff --git a/mozilla/dom/src/xul/nsJSXULElement.cpp b/mozilla/dom/src/xul/nsJSXULElement.cpp index 51bd30107e6..cceceaadf7f 100644 --- a/mozilla/dom/src/xul/nsJSXULElement.cpp +++ b/mozilla/dom/src/xul/nsJSXULElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMElement.h" #include "nsIDOMCSSStyleDeclaration.h" @@ -54,14 +54,6 @@ static NS_DEFINE_IID(kIRDFResourceIID, NS_IRDFRESOURCE_IID); static NS_DEFINE_IID(kIControllersIID, NS_ICONTROLLERS_IID); static NS_DEFINE_IID(kINodeListIID, NS_IDOMNODELIST_IID); -NS_DEF_PTR(nsIDOMElement); -NS_DEF_PTR(nsIDOMCSSStyleDeclaration); -NS_DEF_PTR(nsIRDFCompositeDataSource); -NS_DEF_PTR(nsIDOMXULElement); -NS_DEF_PTR(nsIRDFResource); -NS_DEF_PTR(nsIControllers); -NS_DEF_PTR(nsIDOMNodeList); - // // XULElement property ids // @@ -89,18 +81,19 @@ GetXULElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case XULELEMENT_ID: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULELEMENT_ID, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULELEMENT_ID, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -109,16 +102,16 @@ GetXULElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case XULELEMENT_CLASSNAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULELEMENT_CLASSNAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULELEMENT_CLASSNAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -127,92 +120,92 @@ GetXULElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case XULELEMENT_STYLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULELEMENT_STYLE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULELEMENT_STYLE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMCSSStyleDeclaration* prop; nsresult result = NS_OK; result = a->GetStyle(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case XULELEMENT_DATABASE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULELEMENT_DATABASE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULELEMENT_DATABASE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIRDFCompositeDataSource* prop; nsresult result = NS_OK; result = a->GetDatabase(&prop); if (NS_SUCCEEDED(result)) { // get the js object; n.b., this will do a release on 'prop' - nsJSUtils::nsConvertXPCObjectToJSVal(prop, nsIRDFCompositeDataSource::GetIID(), cx, vp); + nsJSUtils::nsConvertXPCObjectToJSVal(prop, nsIRDFCompositeDataSource::GetIID(), cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case XULELEMENT_RESOURCE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULELEMENT_RESOURCE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULELEMENT_RESOURCE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIRDFResource* prop; nsresult result = NS_OK; result = a->GetResource(&prop); if (NS_SUCCEEDED(result)) { // get the js object; n.b., this will do a release on 'prop' - nsJSUtils::nsConvertXPCObjectToJSVal(prop, nsIRDFResource::GetIID(), cx, vp); + nsJSUtils::nsConvertXPCObjectToJSVal(prop, nsIRDFResource::GetIID(), cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case XULELEMENT_CONTROLLERS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULELEMENT_CONTROLLERS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULELEMENT_CONTROLLERS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIControllers* prop; nsresult result = NS_OK; result = a->GetControllers(&prop); if (NS_SUCCEEDED(result)) { // get the js object; n.b., this will do a release on 'prop' - nsJSUtils::nsConvertXPCObjectToJSVal(prop, nsIControllers::GetIID(), cx, vp); + nsJSUtils::nsConvertXPCObjectToJSVal(prop, nsIControllers::GetIID(), cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -233,18 +226,19 @@ SetXULElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case XULELEMENT_ID: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULELEMENT_ID, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULELEMENT_ID, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -256,9 +250,9 @@ SetXULElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case XULELEMENT_CLASSNAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULELEMENT_CLASSNAME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULELEMENT_CLASSNAME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -270,14 +264,14 @@ SetXULElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case XULELEMENT_DATABASE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULELEMENT_DATABASE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULELEMENT_DATABASE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIRDFCompositeDataSource* prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToXPCObject((nsISupports **) &prop, kIRDFCompositeDataSourceIID, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_XPC_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_XPC_OBJECT_ERR); } a->SetDatabase(prop); @@ -285,11 +279,11 @@ SetXULElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -335,45 +329,46 @@ XULElementAddBroadcastListener(JSContext *cx, JSObject *obj, uintN argc, jsval * nsIDOMXULElement *nativeThis = (nsIDOMXULElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsAutoString b0; - nsIDOMElementPtr b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULELEMENT_ADDBROADCASTLISTENER, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b1; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULELEMENT_ADDBROADCASTLISTENER, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b1, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b1), kIElementIID, "Element", cx, argv[1])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->AddBroadcastListener(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -392,45 +387,46 @@ XULElementRemoveBroadcastListener(JSContext *cx, JSObject *obj, uintN argc, jsva nsIDOMXULElement *nativeThis = (nsIDOMXULElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsAutoString b0; - nsIDOMElementPtr b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULELEMENT_REMOVEBROADCASTLISTENER, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b1; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULELEMENT_REMOVEBROADCASTLISTENER, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b1, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b1), kIElementIID, "Element", cx, argv[1])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->RemoveBroadcastListener(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -448,22 +444,6 @@ XULElementDoCommand(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval { nsIDOMXULElement *nativeThis = (nsIDOMXULElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULELEMENT_DOCOMMAND, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -471,9 +451,26 @@ XULElementDoCommand(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULELEMENT_DOCOMMAND, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->DoCommand(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -494,30 +491,31 @@ XULElementGetElementsByAttribute(JSContext *cx, JSObject *obj, uintN argc, jsval nsIDOMNodeList* nativeRet; nsAutoString b0; nsAutoString b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULELEMENT_GETELEMENTSBYATTRIBUTE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULELEMENT_GETELEMENTSBYATTRIBUTE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); @@ -525,10 +523,10 @@ XULElementGetElementsByAttribute(JSContext *cx, JSObject *obj, uintN argc, jsval result = nativeThis->GetElementsByAttribute(b0, b1, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; diff --git a/mozilla/dom/src/xul/nsJSXULTreeElement.cpp b/mozilla/dom/src/xul/nsJSXULTreeElement.cpp index 9a8a426a793..a0a432e9bc7 100644 --- a/mozilla/dom/src/xul/nsJSXULTreeElement.cpp +++ b/mozilla/dom/src/xul/nsJSXULTreeElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMXULElement.h" #include "nsIDOMXULTreeElement.h" @@ -46,10 +46,6 @@ static NS_DEFINE_IID(kIXULElementIID, NS_IDOMXULELEMENT_IID); static NS_DEFINE_IID(kIXULTreeElementIID, NS_IDOMXULTREEELEMENT_IID); static NS_DEFINE_IID(kINodeListIID, NS_IDOMNODELIST_IID); -NS_DEF_PTR(nsIDOMXULElement); -NS_DEF_PTR(nsIDOMXULTreeElement); -NS_DEF_PTR(nsIDOMNodeList); - // // XULTreeElement property ids // @@ -73,56 +69,57 @@ GetXULTreeElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case XULTREEELEMENT_SELECTEDITEMS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTEDITEMS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTEDITEMS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNodeList* prop; nsresult result = NS_OK; result = a->GetSelectedItems(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case XULTREEELEMENT_SELECTEDCELLS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTEDCELLS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTEDCELLS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNodeList* prop; nsresult result = NS_OK; result = a->GetSelectedCells(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -143,19 +140,20 @@ SetXULTreeElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -200,44 +198,45 @@ XULTreeElementSelectItem(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMXULElementPtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTITEM, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTITEM, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIXULElementIID, "XULElement", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->SelectItem(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -255,44 +254,45 @@ XULTreeElementSelectCell(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMXULElementPtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTCELL, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTCELL, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIXULElementIID, "XULElement", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->SelectCell(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -310,22 +310,6 @@ XULTreeElementClearItemSelection(JSContext *cx, JSObject *obj, uintN argc, jsval { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_CLEARITEMSELECTION, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -333,9 +317,26 @@ XULTreeElementClearItemSelection(JSContext *cx, JSObject *obj, uintN argc, jsval { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_CLEARITEMSELECTION, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->ClearItemSelection(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -353,22 +354,6 @@ XULTreeElementClearCellSelection(JSContext *cx, JSObject *obj, uintN argc, jsval { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_CLEARCELLSELECTION, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -376,9 +361,26 @@ XULTreeElementClearCellSelection(JSContext *cx, JSObject *obj, uintN argc, jsval { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_CLEARCELLSELECTION, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->ClearCellSelection(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -396,44 +398,45 @@ XULTreeElementAddItemToSelection(JSContext *cx, JSObject *obj, uintN argc, jsval { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMXULElementPtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_ADDITEMTOSELECTION, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_ADDITEMTOSELECTION, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIXULElementIID, "XULElement", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->AddItemToSelection(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -451,44 +454,45 @@ XULTreeElementRemoveItemFromSelection(JSContext *cx, JSObject *obj, uintN argc, { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMXULElementPtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_REMOVEITEMFROMSELECTION, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_REMOVEITEMFROMSELECTION, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIXULElementIID, "XULElement", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->RemoveItemFromSelection(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -506,44 +510,45 @@ XULTreeElementAddCellToSelection(JSContext *cx, JSObject *obj, uintN argc, jsval { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMXULElementPtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_ADDCELLTOSELECTION, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_ADDCELLTOSELECTION, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIXULElementIID, "XULElement", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->AddCellToSelection(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -561,44 +566,45 @@ XULTreeElementRemoveCellFromSelection(JSContext *cx, JSObject *obj, uintN argc, { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMXULElementPtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_REMOVECELLFROMSELECTION, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_REMOVECELLFROMSELECTION, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIXULElementIID, "XULElement", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->RemoveCellFromSelection(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -616,44 +622,45 @@ XULTreeElementToggleItemSelection(JSContext *cx, JSObject *obj, uintN argc, jsva { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMXULElementPtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_TOGGLEITEMSELECTION, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_TOGGLEITEMSELECTION, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIXULElementIID, "XULElement", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->ToggleItemSelection(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -671,44 +678,45 @@ XULTreeElementToggleCellSelection(JSContext *cx, JSObject *obj, uintN argc, jsva { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMXULElementPtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_TOGGLECELLSELECTION, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_TOGGLECELLSELECTION, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIXULElementIID, "XULElement", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->ToggleCellSelection(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -726,52 +734,53 @@ XULTreeElementSelectItemRange(JSContext *cx, JSObject *obj, uintN argc, jsval *a { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMXULElementPtr b0; - nsIDOMXULElementPtr b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTITEMRANGE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; + nsCOMPtr b1; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTITEMRANGE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIXULElementIID, "XULElement", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b1, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b1), kIXULElementIID, "XULElement", cx, argv[1])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->SelectItemRange(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -789,52 +798,53 @@ XULTreeElementSelectCellRange(JSContext *cx, JSObject *obj, uintN argc, jsval *a { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMXULElementPtr b0; - nsIDOMXULElementPtr b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTCELLRANGE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; + nsCOMPtr b1; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTCELLRANGE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIXULElementIID, "XULElement", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b1, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b1), kIXULElementIID, "XULElement", cx, argv[1])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->SelectCellRange(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -852,22 +862,6 @@ XULTreeElementSelectAll(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, j { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTALL, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -875,9 +869,26 @@ XULTreeElementSelectAll(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, j { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTALL, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->SelectAll(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -895,22 +906,6 @@ XULTreeElementInvertSelection(JSContext *cx, JSObject *obj, uintN argc, jsval *a { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_INVERTSELECTION, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -918,9 +913,26 @@ XULTreeElementInvertSelection(JSContext *cx, JSObject *obj, uintN argc, jsval *a { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_INVERTSELECTION, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->InvertSelection(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; diff --git a/mozilla/dom/tools/FileGen.h b/mozilla/dom/tools/FileGen.h index f9d02594430..97ac9dd7a12 100644 --- a/mozilla/dom/tools/FileGen.h +++ b/mozilla/dom/tools/FileGen.h @@ -32,7 +32,7 @@ class ofstream; #endif -//#define USE_COMPTR +#define USE_COMPTR 1 class IdlObject; class IdlSpecification; diff --git a/mozilla/dom/tools/JSStubGen.cpp b/mozilla/dom/tools/JSStubGen.cpp index bdf1d72c3cb..f0755f4c259 100644 --- a/mozilla/dom/tools/JSStubGen.cpp +++ b/mozilla/dom/tools/JSStubGen.cpp @@ -97,6 +97,7 @@ static const char kIncludeDefaultsStr[] = "\n" "#include \"nsJSUtils.h\"\n" "#include \"nsDOMError.h\"\n" "#include \"nscore.h\"\n" +"#include \"nsIServiceManager.h\"\n" "#include \"nsIScriptContext.h\"\n" "#include \"nsIScriptSecurityManager.h\"\n" "#include \"nsIJSScriptObject.h\"\n" @@ -320,27 +321,29 @@ static const char kPropFuncBeginStr[] = "\n" static const char kIntCaseStr[] = " if (JSVAL_IS_INT(id)) {\n" -" nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx);\n" -" nsCOMPtr secMan;\n" -" if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) {\n" -" return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR);\n" +" nsresult rv;\n" +" NS_WITH_SERVICE(nsIScriptSecurityManager, secMan,\n" +" NS_SCRIPTSECURITYMANAGER_PROGID, &rv);\n" +" if (NS_FAILED(rv)) {\n" +" return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR);\n" " }\n" " switch(JSVAL_TO_INT(id)) {\n"; static const char kIntCaseNamedItemStr[] = " PRBool checkNamedItem = PR_TRUE;\n" " if (JSVAL_IS_INT(id)) {\n" -" nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx);\n" -" nsCOMPtr secMan;\n" -" if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) {\n" -" return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR);\n" +" nsresult rv;\n" +" NS_WITH_SERVICE(nsIScriptSecurityManager, secMan,\n" +" NS_SCRIPTSECURITYMANAGER_PROGID, &rv);\n" +" if (NS_FAILED(rv)) {\n" +" return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR);\n" " }\n" " checkNamedItem = PR_FALSE;\n" " switch(JSVAL_TO_INT(id)) {\n"; static const char kPropFuncDefaultStr[] = " default:\n" -" return nsJSUtils::nsCallJSScriptObject%sProperty(a, cx, id, vp);\n" +" return nsJSUtils::nsCallJSScriptObject%sProperty(a, cx, obj, id, vp);\n" " }\n" " }\n"; @@ -360,7 +363,7 @@ static const char kPropFuncDefaultItemStr[] = "%s" " }\n" " else {\n" -" return nsJSUtils::nsReportError(cx, result);\n" +" return nsJSUtils::nsReportError(cx, obj, result);\n" " }\n" " }\n" " }\n" @@ -380,11 +383,11 @@ static const char kPropFuncDefaultItemNonPrimaryStr[] = " }\n" " else {\n" " NS_RELEASE(b);\n" -" return nsJSUtils::nsReportError(cx, result);\n" +" return nsJSUtils::nsReportError(cx, obj, result);\n" " }\n" " }\n" " else {\n" -" return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR);\n" +" return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR);\n" " }\n" " }\n" " }\n" @@ -392,7 +395,7 @@ static const char kPropFuncDefaultItemNonPrimaryStr[] = static const char kPropFuncEndStr[] = " else {\n" -" return nsJSUtils::nsCallJSScriptObject%sProperty(a, cx, id, vp);\n" +" return nsJSUtils::nsCallJSScriptObject%sProperty(a, cx, obj, id, vp);\n" " }\n" "\n" " return PR_TRUE;\n" @@ -419,11 +422,11 @@ static const char kPropFuncNamedItemStr[] = "%s" " }\n" " else {\n" -" return nsJSUtils::nsCallJSScriptObject%sProperty(a, cx, id, vp);\n" +" return nsJSUtils::nsCallJSScriptObject%sProperty(a, cx, obj, id, vp);\n" " }\n" " }\n" " else {\n" -" return nsJSUtils::nsReportError(cx, result);\n" +" return nsJSUtils::nsReportError(cx, obj, result);\n" " }\n" " }\n"; @@ -451,16 +454,16 @@ static const char kPropFuncNamedItemNonPrimaryStr[] = "%s" " }\n" " else {\n" -" return nsJSUtils::nsCallJSScriptObject%sProperty(a, cx, id, vp);\n" +" return nsJSUtils::nsCallJSScriptObject%sProperty(a, cx, obj, id, vp);\n" " }\n" " }\n" " else {\n" " NS_RELEASE(b);\n" -" return nsJSUtils::nsReportError(cx, result);\n" +" return nsJSUtils::nsReportError(cx, obj, result);\n" " }\n" " }\n" " else {\n" -" return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR);\n" +" return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR);\n" " }\n" " }\n"; @@ -477,9 +480,9 @@ static const char kPropCaseBeginStr[] = " case %s_%s:\n" " {\n" " PRBool ok = PR_FALSE;\n" -" secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_%s_%s, %s, &ok);\n" +" secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_%s_%s, %s, &ok);\n" " if (!ok) {\n" -" return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR);\n" +" return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR);\n" " }\n"; static const char kPropCaseEndStr[] = @@ -629,7 +632,7 @@ static const char kGetCaseStr[] = "%s" " }\n" " else {\n" -" return nsJSUtils::nsReportError(cx, result);\n" +" return nsJSUtils::nsReportError(cx, obj, result);\n" " }\n"; static const char kGetCaseNonPrimaryStr[] = @@ -644,20 +647,20 @@ static const char kGetCaseNonPrimaryStr[] = " }\n" " else {\n" " NS_RELEASE(b);\n" -" return nsJSUtils::nsReportError(cx, result);\n" +" return nsJSUtils::nsReportError(cx, obj, result);\n" " }\n" " }\n" " else {\n" -" return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR);\n" +" return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR);\n" " }\n"; static const char kObjectGetCaseStr[] = " // get the js object\n" -" nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp);\n"; +" nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp);\n"; static const char kXPIDLObjectGetCaseStr[] = " // get the js object; n.b., this will do a release on 'prop'\n" -" nsJSUtils::nsConvertXPCObjectToJSVal(prop, %s::GetIID(), cx, vp);\n"; +" nsJSUtils::nsConvertXPCObjectToJSVal(prop, %s::GetIID(), cx, obj, vp);\n"; static const char kStringGetCaseStr[] = " nsJSUtils::nsConvertStringToJSVal(prop, cx, vp);\n"; @@ -774,7 +777,7 @@ static const char kSetCaseNonPrimaryStr[] = " }\n" " else {\n" " %s\n" -" return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR);\n" +" return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR);\n" " }\n" " %s\n"; @@ -783,13 +786,13 @@ static const char kObjectSetCaseStr[] = " if (PR_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&prop,\n" " kI%sIID, \"%s\",\n" " cx, *vp)) {\n" -" return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR);\n" +" return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR);\n" " }\n"; static const char kXPIDLObjectSetCaseStr[] = " if (PR_FALSE == nsJSUtils::nsConvertJSValToXPCObject((nsISupports **) &prop,\n" " kI%sIID, cx, *vp)) {\n" -" return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_XPC_OBJECT_ERR);\n" +" return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_XPC_OBJECT_ERR);\n" " }\n"; static const char kObjectSetCaseEndStr[] = "NS_IF_RELEASE(prop);"; @@ -805,12 +808,12 @@ static const char kIntSetCaseStr[] = " prop = (%s)temp;\n" " }\n" " else {\n" -" return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR);\n" +" return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR);\n" " }\n"; static const char kBoolSetCaseStr[] = " if (PR_FALSE == nsJSUtils::nsConvertJSValToBool(&prop, cx, *vp)) {\n" -" return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR);\n" +" return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR);\n" " }\n"; static const char kJSValSetCaseStr[] = @@ -997,8 +1000,8 @@ static const char kMethodBeginNonPrimaryStr[] = "\n\n" " if (NS_OK != privateThis->QueryInterface(kI%sIID, getter_AddRefs(nativeThis))) {\n" #else " if (NS_OK != privateThis->QueryInterface(kI%sIID, (void **)&nativeThis)) {\n" -#endif" nsIDOM%s *nativeThis = nsnull;\n" -" return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_WRONG_TYPE_ERR);\n" +#endif +" return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_WRONG_TYPE_ERR);\n" " }\n" "\n"; @@ -1010,19 +1013,22 @@ static const char kMethodParamStr[] = " %s b%d;\n"; static const char kMethodBodyBeginStr[] = "\n" " *rval = JSVAL_NULL;\n" "\n" -" nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx);\n" -" nsCOMPtr secMan;\n" -" if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) {\n" -" return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR);\n" -" }\n" " {\n" " PRBool ok;\n" -" secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_%s_%s, PR_FALSE, &ok);\n" +" nsresult rv;\n" +" NS_WITH_SERVICE(nsIScriptSecurityManager, secMan,\n" +" NS_SCRIPTSECURITYMANAGER_PROGID, &rv);\n" +" if (NS_FAILED(rv)) {\n" +" return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR);\n" +" }\n" +" secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_%s_%s, PR_FALSE, &ok);\n" " if (!ok) {\n" -" return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR);\n" +" return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR);\n" " }\n" " }\n" -"\n" +"\n"; + +static const char kMethodCheckNullStr[] = " // If there's no private data, this must be the prototype, so ignore\n" " if (nsnull == nativeThis) {\n" " return JS_TRUE;\n" @@ -1030,6 +1036,18 @@ static const char kMethodBodyBeginStr[] = "\n" "\n" " {\n"; +static const char kMethodCheckNullNonPrimaryStr[] = +" // If there's no private data, this must be the prototype, so ignore\n" +#ifdef USE_COMPTR +" if (!nativeThis) {\n" +#else +" if (nativeThis.IsNull()) {\n" +#endif +" return JS_TRUE;\n" +" }\n" +"\n" +" {\n"; + static const char kMethodObjectParamStr[] = #ifdef USE_COMPTR " if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b%d),\n" @@ -1040,7 +1058,7 @@ static const char kMethodObjectParamStr[] = " \"%s\",\n" " cx,\n" " argv[%d])) {\n" -" return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR);\n" +" return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR);\n" " }\n"; #define JSGEN_GENERATE_OBJECTPARAM(buffer, paramNum, paramType) \ @@ -1055,7 +1073,7 @@ static const char kMethodXPIDLObjectParamStr[] = " if (JS_FALSE == nsJSUtils::nsConvertJSValToXPCObject((nsISupports**) &b%d,\n" #endif " kI%sIID, cx, argv[%d])) {\n" -" return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_XPC_OBJECT_ERR);\n" +" return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_XPC_OBJECT_ERR);\n" " }\n"; #define JSGEN_GENERATE_XPIDL_OBJECTPARAM(buffer, paramNum, paramType) \ @@ -1072,7 +1090,7 @@ static const char kMethodStringParamStr[] = static const char kMethodBoolParamStr[] = " if (!nsJSUtils::nsConvertJSValToBool(&b%d, cx, argv[%d])) {\n" -" return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_BOOLEAN_ERR);\n" +" return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_BOOLEAN_ERR);\n" " }\n"; #define JSGEN_GENERATE_BOOLPARAM(buffer, paramNum) \ @@ -1080,7 +1098,7 @@ static const char kMethodBoolParamStr[] = static const char kMethodIntParamStr[] = " if (!JS_ValueToInt32(cx, argv[%d], (int32 *)&b%d)) {\n" -" return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_NUMBER_ERR);\n" +" return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_NUMBER_ERR);\n" " }\n"; #define JSGEN_GENERATE_INTPARAM(buffer, paramNum) \ @@ -1095,7 +1113,7 @@ static const char kMethodFuncParamStr[] = " cx,\n" " obj,\n" " argv[%d])) {\n" -" return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_FUNCTION_ERR);\n" +" return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_FUNCTION_ERR);\n" " }\n"; #define JSGEN_GENERATE_FUNCPARAM(buffer, paramNum, paramType) \ @@ -1115,7 +1133,7 @@ static const char kMethodBodyMiddleStr[] = "\n" " result = nativeThis->%s(%s%snativeRet);\n" " if (NS_FAILED(result)) {\n" -" return nsJSUtils::nsReportError(cx, result);\n" +" return nsJSUtils::nsReportError(cx, obj, result);\n" " }\n" "\n"; @@ -1123,16 +1141,16 @@ static const char kMethodBodyMiddleNoReturnStr[] = "\n" " result = nativeThis->%s(%s);\n" " if (NS_FAILED(result)) {\n" -" return nsJSUtils::nsReportError(cx, result);\n" +" return nsJSUtils::nsReportError(cx, obj, result);\n" " }\n" "\n"; static const char kMethodObjectRetStr[] = -" nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval);\n"; +" nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval);\n"; static const char kMethodXPIDLObjectRetStr[] = " // n.b., this will release nativeRet\n" -" nsJSUtils::nsConvertXPCObjectToJSVal(nativeRet, %s::GetIID(), cx, rval);\n"; +" nsJSUtils::nsConvertXPCObjectToJSVal(nativeRet, %s::GetIID(), cx, obj, rval);\n"; static const char kMethodStringRetStr[] = " nsJSUtils::nsConvertStringToJSVal(nativeRet, cx, rval);\n"; @@ -1151,7 +1169,7 @@ static const char kMethodJSValRetStr[] = static const char kMethodBadParamStr[] = " if (argc < %d) {\n" -" return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR);\n" +" return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR);\n" " }\n" "\n"; @@ -1227,11 +1245,17 @@ JSStubGen::GenerateMethods(IdlSpecification &aSpec) sprintf(buf, kMethodBodyBeginStr, upr_iface_name, upr_method_name); + if (i == 0) { + *file << kMethodCheckNullStr; + } + else { + *file << kMethodCheckNullNonPrimaryStr; + } *file << buf; - + if (pcount > 0) { - sprintf(buf, kMethodBadParamStr, pcount); - *file << buf; + sprintf(buf, kMethodBadParamStr, pcount); + *file << buf; } for (p = 0; p < pcount; p++) { @@ -1518,8 +1542,6 @@ static const char kConstructorBeginStr[] = "{\n" " nsresult result;\n" " nsIID classID;\n" -" nsIScriptContext* context = (nsIScriptContext*)JS_GetContextPrivate(cx);\n" -" nsIScriptNameSpaceManager* manager;\n" " nsIDOM%s *nativeThis;\n" " nsIScriptObjectOwner *owner = nsnull;\n" " nsIJSNativeInitializer* initializer = nsnull;\n" @@ -1527,13 +1549,19 @@ static const char kConstructorBeginStr[] = " static NS_DEFINE_IID(kIDOM%sIID, NS_IDOM%s_IID);\n" " static NS_DEFINE_IID(kIJSNativeInitializerIID, NS_IJSNATIVEINITIALIZER_IID);\n" "\n" -" result = context->GetNameSpaceManager(&manager);\n" -" if (NS_OK != result) {\n" +" nsCOMPtr scriptCX;\n" +" nsJSUtils::nsGetStaticScriptContext(cx, obj, getter_AddRefs(scriptCX));\n" +" if (!scriptCX) {\n" +" return JS_FALSE;\n" +" }\n" +"\n" +" nsCOMPtr manager;\n" +" scriptCX->GetNameSpaceManager(getter_AddRefs(manager));\n" +" if (!manager) {\n" " return JS_FALSE;\n" " }\n" "\n" " result = manager->LookupName(\"%s\", PR_TRUE, classID);\n" -" NS_RELEASE(manager);\n" " if (NS_OK != result) {\n" " return JS_FALSE;\n" " }\n" @@ -1548,7 +1576,7 @@ static const char kConstructorBeginStr[] = "\n" " result = nativeThis->QueryInterface(kIJSNativeInitializerIID, (void **)&initializer);\n" " if (NS_OK == result) {\n" -" result = initializer->Initialize(cx, argc, argv);\n" +" result = initializer->Initialize(cx, obj, argc, argv);\n" " NS_RELEASE(initializer);\n" "\n" " if (NS_OK != result) {\n" @@ -1572,12 +1600,12 @@ static const char kConstructorBeginStr[] = #define JSGEN_GENERATE_CONSTRUCTOR(buf, className, caps) \ sprintf(buf, kConstructorBeginStr, className, className, className, \ - className, caps, className, className); + className, caps, className, className) void JSStubGen::GenerateConstructor(IdlSpecification &aSpec) { - char buf[2048]; + char buf[4096]; ofstream *file = GetFile(); IdlInterface *primary_iface = aSpec.GetInterfaceAt(0); IdlFunction *constructor; diff --git a/mozilla/js/src/xpconnect/idl/MANIFEST b/mozilla/js/src/xpconnect/idl/MANIFEST index ce954960537..8e6b8521df3 100644 --- a/mozilla/js/src/xpconnect/idl/MANIFEST +++ b/mozilla/js/src/xpconnect/idl/MANIFEST @@ -2,8 +2,10 @@ # This is a list of local files which get copied to the mozilla:dist directory # -xpccomponents.idl -xpcjsid.idl -xpctest.idl +nsIJSContextStack.idl +nsIJSRuntimeService.idl +nsIXPConnect.idl nsIXPCSecurityManager.idl - +xpccomponents.idl +xpcexception.idl +xpcjsid.idl diff --git a/mozilla/js/src/xpconnect/idl/Makefile.in b/mozilla/js/src/xpconnect/idl/Makefile.in index 4bbeeaf3972..bbdb8a13333 100644 --- a/mozilla/js/src/xpconnect/idl/Makefile.in +++ b/mozilla/js/src/xpconnect/idl/Makefile.in @@ -43,20 +43,11 @@ MODULE = xpconnect XPIDLSRCS = \ xpccomponents.idl \ xpcjsid.idl \ - xpctest.idl \ - xpctest2.idl \ xpcexception.idl \ nsIJSContextStack.idl \ nsIJSRuntimeService.idl \ + nsIXPConnect.idl \ nsIXPCSecurityManager.idl \ - xpctest_attributes.idl \ - xpctest_in.idl \ - xpctest_const.idl \ - xpctest_out.idl \ - xpctest_inout.idl \ - xpctest_calljs.idl \ - xpctest_multiple.idl \ - xpctest_const.idl \ $(NULL) include $(topsrcdir)/config/rules.mk diff --git a/mozilla/js/src/xpconnect/idl/makefile.win b/mozilla/js/src/xpconnect/idl/makefile.win index f459b364189..308d28f2dd9 100644 --- a/mozilla/js/src/xpconnect/idl/makefile.win +++ b/mozilla/js/src/xpconnect/idl/makefile.win @@ -38,20 +38,11 @@ MODULE=xpconnect XPIDLSRCS = \ .\xpccomponents.idl \ .\xpcjsid.idl \ - .\xpctest.idl \ - .\xpctest2.idl \ .\xpcexception.idl \ .\nsIJSContextStack.idl \ .\nsIJSRuntimeService.idl \ + .\nsIXPConnect.idl \ .\nsIXPCSecurityManager.idl \ - .\xpctest_attributes.idl\ - .\xpctest_in.idl\ - .\xpctest_const.idl\ - .\xpctest_out.idl\ - .\xpctest_inout.idl\ - .\xpctest_calljs.idl\ - .\xpctest_multiple.idl\ - .\xpctest_const.idl\ $(NULL) include <$(DEPTH)\config\rules.mak> diff --git a/mozilla/js/src/xpconnect/idl/nsIXPConnect.idl b/mozilla/js/src/xpconnect/idl/nsIXPConnect.idl new file mode 100644 index 00000000000..dbf8d266e38 --- /dev/null +++ b/mozilla/js/src/xpconnect/idl/nsIXPConnect.idl @@ -0,0 +1,268 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape 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/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released + * March 31, 1998. + * + * The Initial Developer of the Original Code is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the + * terms of the GNU Public License (the "GPL"), in which case the + * provisions of the GPL are applicable instead of those above. + * If you wish to allow use of your version of this file only + * under the terms of the GPL and not to allow others to use your + * version of this file under the NPL, indicate your decision by + * deleting the provisions above and replace them with the notice + * and other provisions required by the GPL. If you do not delete + * the provisions above, a recipient may use your version of this + * file under either the NPL or the GPL. + */ + +/* The core XPConnect public interfaces. */ + +#include "nsISupports.idl" +#include "xpccomponents.idl" +#include "xpcjsid.idl" +#include "xpcexception.idl" + +%{ C++ +#include "jspubtd.h" +#include "nsIInterfaceInfo.h" +#include "nsIInterfaceInfoManager.h" +#include "xptinfo.h" +%} + +/***************************************************************************/ + +[ptr] native JSContextPtr(JSContext); +[ptr] native JSObjectPtr(JSObject); +[ptr] native JSValPtr(jsval); + +/***************************************************************************/ + +%{ C++ +/***************************************************************************/ +#define GENERATE_XPC_FAILURE(x) \ + (NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_XPCONNECT,x)) + +#define NS_ERROR_XPC_NOT_ENOUGH_ARGS GENERATE_XPC_FAILURE( 1) +#define NS_ERROR_XPC_NEED_OUT_OBJECT GENERATE_XPC_FAILURE( 2) +#define NS_ERROR_XPC_CANT_SET_OUT_VAL GENERATE_XPC_FAILURE( 3) +#define NS_ERROR_XPC_NATIVE_RETURNED_FAILURE GENERATE_XPC_FAILURE( 4) +#define NS_ERROR_XPC_CANT_GET_INTERFACE_INFO GENERATE_XPC_FAILURE( 5) +#define NS_ERROR_XPC_CANT_GET_PARAM_IFACE_INFO GENERATE_XPC_FAILURE( 6) +#define NS_ERROR_XPC_CANT_GET_METHOD_INFO GENERATE_XPC_FAILURE( 7) +#define NS_ERROR_XPC_UNEXPECTED GENERATE_XPC_FAILURE( 8) +#define NS_ERROR_XPC_BAD_CONVERT_JS GENERATE_XPC_FAILURE( 9) +#define NS_ERROR_XPC_BAD_CONVERT_NATIVE GENERATE_XPC_FAILURE(10) +#define NS_ERROR_XPC_BAD_CONVERT_JS_NULL_REF GENERATE_XPC_FAILURE(11) +#define NS_ERROR_XPC_BAD_OP_ON_WN_PROTO GENERATE_XPC_FAILURE(12) +#define NS_ERROR_XPC_CANT_CONVERT_WN_TO_FUN GENERATE_XPC_FAILURE(13) +#define NS_ERROR_XPC_CANT_DEFINE_PROP_ON_WN GENERATE_XPC_FAILURE(14) +#define NS_ERROR_XPC_CANT_WATCH_WN_STATIC GENERATE_XPC_FAILURE(15) +#define NS_ERROR_XPC_CANT_EXPORT_WN_STATIC GENERATE_XPC_FAILURE(16) +#define NS_ERROR_XPC_SCRIPTABLE_CALL_FAILED GENERATE_XPC_FAILURE(17) +#define NS_ERROR_XPC_SCRIPTABLE_CTOR_FAILED GENERATE_XPC_FAILURE(18) +#define NS_ERROR_XPC_CANT_CALL_WO_SCRIPTABLE GENERATE_XPC_FAILURE(19) +#define NS_ERROR_XPC_CANT_CTOR_WO_SCRIPTABLE GENERATE_XPC_FAILURE(20) +#define NS_ERROR_XPC_CI_RETURNED_FAILURE GENERATE_XPC_FAILURE(21) +#define NS_ERROR_XPC_GS_RETURNED_FAILURE GENERATE_XPC_FAILURE(22) +#define NS_ERROR_XPC_BAD_CID GENERATE_XPC_FAILURE(23) +#define NS_ERROR_XPC_BAD_IID GENERATE_XPC_FAILURE(24) +#define NS_ERROR_XPC_CANT_CREATE_WN GENERATE_XPC_FAILURE(25) +#define NS_ERROR_XPC_JS_THREW_EXCEPTION GENERATE_XPC_FAILURE(26) +#define NS_ERROR_XPC_JS_THREW_NATIVE_OBJECT GENERATE_XPC_FAILURE(27) +#define NS_ERROR_XPC_JS_THREW_JS_OBJECT GENERATE_XPC_FAILURE(28) +#define NS_ERROR_XPC_JS_THREW_NULL GENERATE_XPC_FAILURE(29) +#define NS_ERROR_XPC_JS_THREW_STRING GENERATE_XPC_FAILURE(30) +#define NS_ERROR_XPC_JS_THREW_NUMBER GENERATE_XPC_FAILURE(31) +#define NS_ERROR_XPC_JAVASCRIPT_ERROR GENERATE_XPC_FAILURE(32) +#define NS_ERROR_XPC_JAVASCRIPT_ERROR_WITH_DETAILS GENERATE_XPC_FAILURE(33) +#define NS_ERROR_XPC_CANT_CONVERT_PRIMITIVE_TO_ARRAY GENERATE_XPC_FAILURE(34) +#define NS_ERROR_XPC_CANT_CONVERT_OBJECT_TO_ARRAY GENERATE_XPC_FAILURE(35) +#define NS_ERROR_XPC_NOT_ENOUGH_ELEMENTS_IN_ARRAY GENERATE_XPC_FAILURE(36) +#define NS_ERROR_XPC_CANT_GET_ARRAY_INFO GENERATE_XPC_FAILURE(37) +#define NS_ERROR_XPC_NOT_ENOUGH_CHARS_IN_STRING GENERATE_XPC_FAILURE(38) +#define NS_ERROR_XPC_SECURITY_MANAGER_VETO GENERATE_XPC_FAILURE(39) +#define NS_ERROR_XPC_INTERFACE_NOT_SCRIPTABLE GENERATE_XPC_FAILURE(40) +#define NS_ERROR_XPC_INTERFACE_NOT_FROM_NSISUPPORTS GENERATE_XPC_FAILURE(41) + +// any new errors here should have an associated entry added in xpc.msg +/***************************************************************************/ +%} + +/***************************************************************************/ + +// forward declarations... +interface nsIXPCScriptable; +interface nsIXPConnectWrappedNative; +interface nsIXPConnectFinalizeListener; +interface nsIInterfaceInfo; +interface nsIXPCSecurityManager; + +/***************************************************************************/ + +[uuid(1B2DDB00-EEE8-11d2-BAA4-00805F8A5DD7)] +interface nsIXPConnectFinalizeListener : nsISupports +{ + void aboutToRelease(in nsISupports aObj); +}; + +/***************************************************************************/ + +[uuid(215DBE02-94A7-11d2-BA58-00805F8A5DD7)] +interface nsIXPConnectWrappedNative : nsISupports +{ + readonly attribute nsIXPCScriptable DynamicScriptable; + readonly attribute nsIXPCScriptable ArbitraryScriptable; + readonly attribute JSObjectPtr JSObject; + readonly attribute nsISupports Native; + readonly attribute nsIInterfaceInfo InterfaceInfo; + readonly attribute nsIIDPtr IID; + readonly attribute JSObjectPtr JSObjectPrototype; + + void setFinalizeListener(in nsIXPConnectFinalizeListener aListener); + void debugDump(in short depth); +}; + +/***************************************************************************/ + +/* +* Wrappers around JSObject are passed around as plain nsISupports pointers. +* To manipulate such a wrapper (as opposed to manipulating the wrapped +* JSObject via the wrapper) do a QueryInterface for the +* nsIXPConnectWrappedJSMethods interface +* i.e. 'GET_NS_IID(nsIXPConnectWrappedJSMethods)' +* and use the methods on that interface. (see below) +* +* The nsIXPConnectWrappedJSMethods interface for any given wrapped JS object +* is implemented using a separate aggregated tearoff object. +*/ + +/***************************************************************************/ + +[uuid(BED52030-BCA6-11d2-BA79-00805F8A5DD7)] +interface nsIXPConnectWrappedJSMethods : nsISupports +{ + readonly attribute JSObjectPtr JSObject; + readonly attribute nsIInterfaceInfo InterfaceInfo; + readonly attribute nsIIDPtr IID; + + void debugDump(in short depth); +}; + +/***************************************************************************/ + +/** +* This is a somewhat special interface. It is available from the global +* nsIXPConnect object when native methods have been called. It is only relevent +* to the currently called native method on the given JSContext/thread. Holding +* a reference past that time (or while other native methods are being called) +* will not assure access to this data. +*/ + +[uuid(0FA68A60-8289-11d3-BB1A-00805F8A5DD7)] +interface nsIXPCNativeCallContext : nsISupports +{ + + readonly attribute nsISupports Callee; + readonly attribute PRUint16 CalleeMethodIndex; + readonly attribute nsIXPConnectWrappedNative CalleeWrapper; + readonly attribute JSContextPtr JSContext; + readonly attribute PRUint32 Argc; + readonly attribute JSValPtr ArgvPtr; + /** + * This may be NULL if the JS caller is ignoring the result of the call. + */ + readonly attribute JSValPtr RetValPtr; + /** + * Set this if JS_SetPendingException has been called. Return NS_OK or + * else this will be ignored and the native method's nsresult will be + * converted into an exception and thrown into JS as is the normal case. + */ + attribute PRBool ExceptionWasThrown; +}; + +/***************************************************************************/ + +%{ C++ +// For use with the service manager +// {CB6593E0-F9B2-11d2-BDD6-000064657374} +#define NS_XPCONNECT_CID \ +{ 0xcb6593e0, 0xf9b2, 0x11d2, \ + { 0xbd, 0xd6, 0x0, 0x0, 0x64, 0x65, 0x73, 0x74 } } +%} + +[uuid(EFAE37B0-946D-11d2-BA58-00805F8A5DD7)] +interface nsIXPConnect : nsISupports +{ +%{ C++ + NS_DEFINE_STATIC_CID_ACCESSOR(NS_XPCONNECT_CID) +%} + + void + initClasses(in JSContextPtr aJSContext, + in JSObjectPtr aGlobalJSObj); + + nsIXPConnectWrappedNative + initClassesWithNewWrappedGlobal( + in JSContextPtr aJSContext, + in nsISupports aCOMObj, + in nsIIDRef aIID); + + nsIXPConnectWrappedNative + wrapNative(in JSContextPtr aJSContext, + in JSObjectPtr aScope, + in nsISupports aCOMObj, + in nsIIDRef aIID); + + nsISupports + wrapJS(in JSContextPtr aJSContext, + in JSObjectPtr aJSObj, + in nsIIDRef aIID); + + nsIXPConnectWrappedNative + getWrappedNativeOfJSObject(in JSContextPtr aJSContext, + in JSObjectPtr aJSObj); + + void setSecurityManagerForJSContext(in JSContextPtr aJSContext, + in nsIXPCSecurityManager aManager, + in PRUint16 flags); + + void getSecurityManagerForJSContext(in JSContextPtr aJSContext, + out nsIXPCSecurityManager aManager, + out PRUint16 flags); + + nsIJSStackFrameLocation + createStackFrameLocation(in PRBool isJSFrame, + in string aFilename, + in string aFunctionName, + in PRInt32 aLineNumber, + in nsIJSStackFrameLocation aCaller); + + void syncJSContexts(); + + readonly attribute nsIJSStackFrameLocation CurrentJSStack; + readonly attribute nsIXPCNativeCallContext CurrentNativeCallContext; + /* pass nsnull to clear pending exception */ + attribute nsIXPCException PendingException; + + void debugDump(in short depth); + void debugDumpObject(in nsISupports aCOMObj, in short depth); + void debugDumpJSStack(); +}; + diff --git a/mozilla/js/src/xpconnect/loader/mozJSComponentLoader.cpp b/mozilla/js/src/xpconnect/loader/mozJSComponentLoader.cpp index df1d83935e9..b573be6c7bb 100644 --- a/mozilla/js/src/xpconnect/loader/mozJSComponentLoader.cpp +++ b/mozilla/js/src/xpconnect/loader/mozJSComponentLoader.cpp @@ -132,7 +132,6 @@ mozJSComponentLoader::~mozJSComponentLoader() JS_RemoveRoot(mContext, &mSuperGlobal); mCompMgrWrapper = nsnull; // release wrapper so GC can release CM - mXPC->AbandonJSContext(mContext); JS_DestroyContext(mContext); mContext = nsnull; @@ -236,12 +235,13 @@ mozJSComponentLoader::ReallyInit() !JS_DefineFunctions(mContext, mSuperGlobal, gGlobalFun)) return NS_ERROR_FAILURE; - rv = mXPC->InitJSContext(mContext, mSuperGlobal, PR_TRUE); + rv = mXPC->InitClasses(mContext, mSuperGlobal); if (NS_FAILED(rv)) return rv; nsCOMPtr wrappedCM; - rv = mXPC->WrapNative(mContext, mCompMgr, NS_GET_IID(nsIComponentManager), + rv = mXPC->WrapNative(mContext, mSuperGlobal, mCompMgr, + NS_GET_IID(nsIComponentManager), getter_AddRefs(wrappedCM)); if (NS_FAILED(rv)) { #ifdef DEBUG_shaver diff --git a/mozilla/js/src/xpconnect/public/MANIFEST b/mozilla/js/src/xpconnect/public/MANIFEST index b01e58b4576..1f3e6f6c753 100644 --- a/mozilla/js/src/xpconnect/public/MANIFEST +++ b/mozilla/js/src/xpconnect/public/MANIFEST @@ -2,6 +2,4 @@ # This is a list of local files which get copied to the mozilla:dist directory # -nsIXPConnect.h nsIXPCScriptable.h -xpclog.h diff --git a/mozilla/js/src/xpconnect/public/Makefile.in b/mozilla/js/src/xpconnect/public/Makefile.in index afc8077553c..74fa293863d 100644 --- a/mozilla/js/src/xpconnect/public/Makefile.in +++ b/mozilla/js/src/xpconnect/public/Makefile.in @@ -41,9 +41,7 @@ include $(DEPTH)/config/autoconf.mk MODULE = xpconnect EXPORTS = \ - nsIXPConnect.h \ nsIXPCScriptable.h \ - xpclog.h \ $(NULL) EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS)) diff --git a/mozilla/js/src/xpconnect/public/makefile.win b/mozilla/js/src/xpconnect/public/makefile.win index 700f19ac26a..891d691baac 100644 --- a/mozilla/js/src/xpconnect/public/makefile.win +++ b/mozilla/js/src/xpconnect/public/makefile.win @@ -36,9 +36,7 @@ DEPTH=..\..\..\.. EXPORTS = \ - nsIXPConnect.h \ nsIXPCScriptable.h \ - xpclog.h \ $(NULL) MODULE = xpconnect diff --git a/mozilla/js/src/xpconnect/public/nsIXPCScriptable.h b/mozilla/js/src/xpconnect/public/nsIXPCScriptable.h index 15fcf42c13a..2a2997a684f 100644 --- a/mozilla/js/src/xpconnect/public/nsIXPCScriptable.h +++ b/mozilla/js/src/xpconnect/public/nsIXPCScriptable.h @@ -317,7 +317,7 @@ public: {return arbitrary->Construct(cx, obj, argc, argv, rval, wrapper, \ NULL, retval);} -#define XPC_IMPLEMENT_FORWARD_HASINSTANCE(_class) \ +#define XPC_IMPLEMENT_FORWARD_HASINSTANCE(_class) \ NS_IMETHODIMP _class::HasInstance(JSContext *cx, JSObject *obj, \ jsval v, JSBool *bp, \ nsIXPConnectWrappedNative* wrapper, \ @@ -453,7 +453,7 @@ public: JSBool* retval) \ {*rval = JSVAL_NULL; *retval = JS_TRUE; return NS_OK;} -#define XPC_IMPLEMENT_IGNORE_HASINSTANCE(_class) \ +#define XPC_IMPLEMENT_IGNORE_HASINSTANCE(_class) \ NS_IMETHODIMP _class::HasInstance(JSContext *cx, JSObject *obj, \ jsval v, JSBool *bp, \ nsIXPConnectWrappedNative* wrapper, \ @@ -470,6 +470,141 @@ public: /***************************************************************************/ +#define XPC_IMPLEMENT_FAIL_CREATE(_class, _code) \ + NS_IMETHODIMP _class::Create(JSContext *cx, JSObject *obj, \ + nsIXPConnectWrappedNative* wrapper, \ + nsIXPCScriptable* arbitrary) \ + {return _code;} + +#define XPC_IMPLEMENT_FAIL_GETFLAGS(_class, _code) \ + NS_IMETHODIMP _class::GetFlags(JSContext *cx, JSObject *obj, \ + nsIXPConnectWrappedNative* wrapper, \ + JSUint32* flagsp, \ + nsIXPCScriptable* arbitrary) \ + {return _code;} + +#define XPC_IMPLEMENT_FAIL_LOOKUPPROPERTY(_class, _code) \ + NS_IMETHODIMP _class::LookupProperty(JSContext *cx, JSObject *obj, \ + jsid id, \ + JSObject **objp, JSProperty **propp, \ + nsIXPConnectWrappedNative* wrapper, \ + nsIXPCScriptable* arbitrary, \ + JSBool* retval) \ + {return _code;} + +#define XPC_IMPLEMENT_FAIL_DEFINEPROPERTY(_class, _code) \ + NS_IMETHODIMP _class::DefineProperty(JSContext *cx, JSObject *obj, \ + jsid id, jsval value, \ + JSPropertyOp getter, JSPropertyOp setter, \ + uintN attrs, JSProperty **propp, \ + nsIXPConnectWrappedNative* wrapper, \ + nsIXPCScriptable* arbitrary, \ + JSBool* retval) \ + {return _code;} + +#define XPC_IMPLEMENT_FAIL_GETPROPERTY(_class, _code) \ + NS_IMETHODIMP _class::GetProperty(JSContext *cx, JSObject *obj, \ + jsid id, jsval *vp, \ + nsIXPConnectWrappedNative* wrapper, \ + nsIXPCScriptable* arbitrary, \ + JSBool* retval) \ + {return _code;} + +#define XPC_IMPLEMENT_FAIL_SETPROPERTY(_class, _code) \ + NS_IMETHODIMP _class::SetProperty(JSContext *cx, JSObject *obj, \ + jsid id, jsval *vp, \ + nsIXPConnectWrappedNative* wrapper, \ + nsIXPCScriptable* arbitrary, \ + JSBool* retval) \ + {return _code;} + +#define XPC_IMPLEMENT_FAIL_GETATTRIBUTES(_class, _code) \ + NS_IMETHODIMP _class::GetAttributes(JSContext *cx, JSObject *obj, \ + jsid id, \ + JSProperty *prop, uintN *attrsp, \ + nsIXPConnectWrappedNative* wrapper, \ + nsIXPCScriptable* arbitrary, \ + JSBool* retval) \ + {return _code;} + +#define XPC_IMPLEMENT_FAIL_SETATTRIBUTES(_class, _code) \ + NS_IMETHODIMP _class::SetAttributes(JSContext *cx, JSObject *obj, \ + jsid id, \ + JSProperty *prop, uintN *attrsp, \ + nsIXPConnectWrappedNative* wrapper, \ + nsIXPCScriptable* arbitrary, \ + JSBool* retval) \ + {return _code;} + +#define XPC_IMPLEMENT_FAIL_DELETEPROPERTY(_class, _code) \ + NS_IMETHODIMP _class::DeleteProperty(JSContext *cx, JSObject *obj, \ + jsid id, jsval *vp, \ + nsIXPConnectWrappedNative* wrapper, \ + nsIXPCScriptable* arbitrary, \ + JSBool* retval) \ + {return _code;} + +#define XPC_IMPLEMENT_FAIL_DEFAULTVALUE(_class, _code) \ + NS_IMETHODIMP _class::DefaultValue(JSContext *cx, JSObject *obj, \ + JSType type, jsval *vp, \ + nsIXPConnectWrappedNative* wrapper, \ + nsIXPCScriptable* arbitrary, \ + JSBool* retval) \ + {return _code;} + +#define XPC_IMPLEMENT_FAIL_ENUMERATE(_class, _code) \ + NS_IMETHODIMP _class::Enumerate(JSContext *cx, JSObject *obj, \ + JSIterateOp enum_op, \ + jsval *statep, jsid *idp, \ + nsIXPConnectWrappedNative* wrapper, \ + nsIXPCScriptable* arbitrary, \ + JSBool* retval) \ + {return _code;} + +#define XPC_IMPLEMENT_FAIL_CHECKACCESS(_class, _code) \ + NS_IMETHODIMP _class::CheckAccess(JSContext *cx, JSObject *obj, \ + jsid id, \ + JSAccessMode mode, jsval *vp, uintN *attrsp, \ + nsIXPConnectWrappedNative* wrapper, \ + nsIXPCScriptable* arbitrary, \ + JSBool* retval) \ + {return _code;} + +#define XPC_IMPLEMENT_FAIL_CALL(_class, _code) \ + NS_IMETHODIMP _class::Call(JSContext *cx, JSObject *obj, \ + uintN argc, jsval *argv, \ + jsval *rval, \ + nsIXPConnectWrappedNative* wrapper, \ + nsIXPCScriptable* arbitrary, \ + JSBool* retval) \ + {return _code;} + +#define XPC_IMPLEMENT_FAIL_CONSTRUCT(_class, _code) \ + NS_IMETHODIMP _class::Construct(JSContext *cx, JSObject *obj, \ + uintN argc, jsval *argv, \ + jsval *rval, \ + nsIXPConnectWrappedNative* wrapper, \ + nsIXPCScriptable* arbitrary, \ + JSBool* retval) \ + {return _code;} + +#define XPC_IMPLEMENT_FAIL_HASINSTANCE(_class, _code) \ + NS_IMETHODIMP _class::HasInstance(JSContext *cx, JSObject *obj, \ + jsval v, JSBool *bp, \ + nsIXPConnectWrappedNative* wrapper, \ + nsIXPCScriptable* arbitrary, \ + JSBool* retval) \ + {return _code;} + +#define XPC_IMPLEMENT_FAIL_FINALIZE(_class, _code) \ + NS_IMETHODIMP _class::Finalize(JSContext *cx, JSObject *obj, \ + nsIXPConnectWrappedNative* wrapper, \ + nsIXPCScriptable* arbitrary) \ + /* XPConnect does the finalization on the wrapper itself anyway */ \ + {return _code;} + +/***************************************************************************/ + #define XPC_IMPLEMENT_FORWARD_IXPCSCRIPTABLE(_class) \ XPC_IMPLEMENT_FORWARD_CREATE(_class) \ XPC_IMPLEMENT_FORWARD_GETFLAGS(_class) \ @@ -506,6 +641,24 @@ public: XPC_IMPLEMENT_IGNORE_HASINSTANCE(_class) \ XPC_IMPLEMENT_IGNORE_FINALIZE(_class) +#define XPC_IMPLEMENT_FAIL_IXPCSCRIPTABLE(_class,_code) \ + XPC_IMPLEMENT_FAIL_CREATE(_class,_code) \ + XPC_IMPLEMENT_FAIL_GETFLAGS(_class,_code) \ + XPC_IMPLEMENT_FAIL_LOOKUPPROPERTY(_class,_code) \ + XPC_IMPLEMENT_FAIL_DEFINEPROPERTY(_class,_code) \ + XPC_IMPLEMENT_FAIL_GETPROPERTY(_class,_code) \ + XPC_IMPLEMENT_FAIL_SETPROPERTY(_class,_code) \ + XPC_IMPLEMENT_FAIL_GETATTRIBUTES(_class,_code) \ + XPC_IMPLEMENT_FAIL_SETATTRIBUTES(_class,_code) \ + XPC_IMPLEMENT_FAIL_DELETEPROPERTY(_class,_code) \ + XPC_IMPLEMENT_FAIL_DEFAULTVALUE(_class,_code) \ + XPC_IMPLEMENT_FAIL_ENUMERATE(_class,_code) \ + XPC_IMPLEMENT_FAIL_CHECKACCESS(_class,_code) \ + XPC_IMPLEMENT_FAIL_CALL(_class,_code) \ + XPC_IMPLEMENT_FAIL_CONSTRUCT(_class,_code) \ + XPC_IMPLEMENT_FAIL_HASINSTANCE(_class,_code) \ + XPC_IMPLEMENT_FAIL_FINALIZE(_class,_code) + // macro test... @@ -515,38 +668,6 @@ public: //}; //XPC_IMPLEMENT_FORWARD_IXPCSCRIPTABLE(foo) -/***************************************************************************/ -/* -* A macro to make it easier to implement a simple Queryinterface that -* also deals with returning the scriptable interface object. -*/ - -#define NS_IMPL_QUERY_INTERFACE_SCRIPTABLE(_class, _classiiddef, _scriptable) \ -nsresult _class::QueryInterface(REFNSIID aIID, void** aInstancePtr) \ -{ \ - if (NULL == aInstancePtr) { \ - return NS_ERROR_NULL_POINTER; \ - } \ - static NS_DEFINE_IID(kClassIID, _classiiddef); \ - if (aIID.Equals(kClassIID)) { \ - *aInstancePtr = (void*) (_class*)this; \ - NS_ADDREF_THIS(); \ - return NS_OK; \ - } \ - if (aIID.Equals(nsIXPCScriptable::GetIID())) { \ - *aInstancePtr = NS_STATIC_CAST(nsIXPCScriptable*, _scriptable); \ - NS_ADDREF((nsISupports*)*aInstancePtr); \ - return NS_OK; \ - } \ - if (aIID.Equals(NS_GET_IID(nsISupports))) { \ - *aInstancePtr = (void*) (_class*)this; \ - NS_ADDREF_THIS(); \ - return NS_OK; \ - } \ - *aInstancePtr = NULL; \ - return NS_NOINTERFACE; \ -} - /***************************************************************************/ #endif /* nsIXPCScriptable_h___ */ diff --git a/mozilla/js/src/xpconnect/public/nsIXPConnect.h b/mozilla/js/src/xpconnect/public/nsIXPConnect.h deleted file mode 100644 index cabec304d85..00000000000 --- a/mozilla/js/src/xpconnect/public/nsIXPConnect.h +++ /dev/null @@ -1,313 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * - * The contents of this file are subject to the Netscape 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/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is Mozilla Communicator client code, released - * March 31, 1998. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - * - * Alternatively, the contents of this file may be used under the - * terms of the GNU Public License (the "GPL"), in which case the - * provisions of the GPL are applicable instead of those above. - * If you wish to allow use of your version of this file only - * under the terms of the GPL and not to allow others to use your - * version of this file under the NPL, indicate your decision by - * deleting the provisions above and replace them with the notice - * and other provisions required by the GPL. If you do not delete - * the provisions above, a recipient may use your version of this - * file under either the NPL or the GPL. - */ - -/* All the XPConnect public interfaces. */ - -#ifndef nsIXPConnect_h___ -#define nsIXPConnect_h___ - -#include "nsISupports.h" -#include "jspubtd.h" -#include "nsIInterfaceInfo.h" -#include "nsIInterfaceInfoManager.h" -#include "xptinfo.h" - -#include "xpccomponents.h" -#include "xpcjsid.h" -#include "xpcexception.h" - -/* - * The linkage of XPC API functions differs depending on whether the file is - * used within the XPC library or not. Any source file within the XPC - * library should define EXPORT_XPC_API whereas any client of the library - * should not. - */ -#ifdef EXPORT_XPC_API -#define XPC_PUBLIC_API(t) JS_EXPORT_API(t) -#define XPC_PUBLIC_DATA(t) JS_EXPORT_DATA(t) -#else -#define XPC_PUBLIC_API(t) JS_IMPORT_API(t) -#define XPC_PUBLIC_DATA(t) JS_IMPORT_DATA(t) -#endif - -#define XPC_FRIEND_API(t) XPC_PUBLIC_API(t) -#define XPC_FRIEND_DATA(t) XPC_PUBLIC_DATA(t) - -// XXX break these up into separate files? -// XXX declare them in XPIDL :) - -/***************************************************************************/ - -#define GENERATE_XPC_FAILURE(x) \ - (NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_XPCONNECT,x)) - -#define NS_ERROR_XPC_NOT_ENOUGH_ARGS GENERATE_XPC_FAILURE( 1) -#define NS_ERROR_XPC_NEED_OUT_OBJECT GENERATE_XPC_FAILURE( 2) -#define NS_ERROR_XPC_CANT_SET_OUT_VAL GENERATE_XPC_FAILURE( 3) -#define NS_ERROR_XPC_NATIVE_RETURNED_FAILURE GENERATE_XPC_FAILURE( 4) -#define NS_ERROR_XPC_CANT_GET_INTERFACE_INFO GENERATE_XPC_FAILURE( 5) -#define NS_ERROR_XPC_CANT_GET_PARAM_IFACE_INFO GENERATE_XPC_FAILURE( 6) -#define NS_ERROR_XPC_CANT_GET_METHOD_INFO GENERATE_XPC_FAILURE( 7) -#define NS_ERROR_XPC_UNEXPECTED GENERATE_XPC_FAILURE( 8) -#define NS_ERROR_XPC_BAD_CONVERT_JS GENERATE_XPC_FAILURE( 9) -#define NS_ERROR_XPC_BAD_CONVERT_NATIVE GENERATE_XPC_FAILURE(10) -#define NS_ERROR_XPC_BAD_CONVERT_JS_NULL_REF GENERATE_XPC_FAILURE(11) -#define NS_ERROR_XPC_BAD_OP_ON_WN_PROTO GENERATE_XPC_FAILURE(12) -#define NS_ERROR_XPC_CANT_CONVERT_WN_TO_FUN GENERATE_XPC_FAILURE(13) -#define NS_ERROR_XPC_CANT_DEFINE_PROP_ON_WN GENERATE_XPC_FAILURE(14) -#define NS_ERROR_XPC_CANT_WATCH_WN_STATIC GENERATE_XPC_FAILURE(15) -#define NS_ERROR_XPC_CANT_EXPORT_WN_STATIC GENERATE_XPC_FAILURE(16) -#define NS_ERROR_XPC_SCRIPTABLE_CALL_FAILED GENERATE_XPC_FAILURE(17) -#define NS_ERROR_XPC_SCRIPTABLE_CTOR_FAILED GENERATE_XPC_FAILURE(18) -#define NS_ERROR_XPC_CANT_CALL_WO_SCRIPTABLE GENERATE_XPC_FAILURE(19) -#define NS_ERROR_XPC_CANT_CTOR_WO_SCRIPTABLE GENERATE_XPC_FAILURE(20) -#define NS_ERROR_XPC_CI_RETURNED_FAILURE GENERATE_XPC_FAILURE(21) -#define NS_ERROR_XPC_GS_RETURNED_FAILURE GENERATE_XPC_FAILURE(22) -#define NS_ERROR_XPC_BAD_CID GENERATE_XPC_FAILURE(23) -#define NS_ERROR_XPC_BAD_IID GENERATE_XPC_FAILURE(24) -#define NS_ERROR_XPC_CANT_CREATE_WN GENERATE_XPC_FAILURE(25) -#define NS_ERROR_XPC_JS_THREW_EXCEPTION GENERATE_XPC_FAILURE(26) -#define NS_ERROR_XPC_JS_THREW_NATIVE_OBJECT GENERATE_XPC_FAILURE(27) -#define NS_ERROR_XPC_JS_THREW_JS_OBJECT GENERATE_XPC_FAILURE(28) -#define NS_ERROR_XPC_JS_THREW_NULL GENERATE_XPC_FAILURE(29) -#define NS_ERROR_XPC_JS_THREW_STRING GENERATE_XPC_FAILURE(30) -#define NS_ERROR_XPC_JS_THREW_NUMBER GENERATE_XPC_FAILURE(31) -#define NS_ERROR_XPC_JAVASCRIPT_ERROR GENERATE_XPC_FAILURE(32) -#define NS_ERROR_XPC_JAVASCRIPT_ERROR_WITH_DETAILS GENERATE_XPC_FAILURE(33) -#define NS_ERROR_XPC_CANT_CONVERT_PRIMITIVE_TO_ARRAY GENERATE_XPC_FAILURE(34) -#define NS_ERROR_XPC_CANT_CONVERT_OBJECT_TO_ARRAY GENERATE_XPC_FAILURE(35) -#define NS_ERROR_XPC_NOT_ENOUGH_ELEMENTS_IN_ARRAY GENERATE_XPC_FAILURE(36) -#define NS_ERROR_XPC_CANT_GET_ARRAY_INFO GENERATE_XPC_FAILURE(37) -#define NS_ERROR_XPC_NOT_ENOUGH_CHARS_IN_STRING GENERATE_XPC_FAILURE(38) -#define NS_ERROR_XPC_SECURITY_MANAGER_VETO GENERATE_XPC_FAILURE(39) -#define NS_ERROR_XPC_INTERFACE_NOT_SCRIPTABLE GENERATE_XPC_FAILURE(40) -#define NS_ERROR_XPC_INTERFACE_NOT_FROM_NSISUPPORTS GENERATE_XPC_FAILURE(41) - - -// any new errors here should have an associated entry added in xpc.msg - -/***************************************************************************/ -// forward declarations... -class nsIXPCScriptable; -class nsIInterfaceInfo; -class nsIXPConnectWrappedNative; -class nsIXPConnectFinalizeListener; -class nsIXPCSecurityManager; - -// {1B2DDB00-EEE8-11d2-BAA4-00805F8A5DD7} -#define NS_IXPCONNECT_FINALIZE_LISTENER_IID \ -{ 0x1b2ddb00, 0xeee8, 0x11d2, \ - { 0xba, 0xa4, 0x0, 0x80, 0x5f, 0x8a, 0x5d, 0xd7 } } -class nsIXPConnectFinalizeListener : public nsISupports -{ -public: - NS_DEFINE_STATIC_IID_ACCESSOR(NS_IXPCONNECT_FINALIZE_LISTENER_IID) - - NS_IMETHOD AboutToRelease(nsISupports* aObj) = 0; -}; - -// {215DBE02-94A7-11d2-BA58-00805F8A5DD7} -#define NS_IXPCONNECT_WRAPPED_NATIVE_IID \ -{ 0x215dbe02, 0x94a7, 0x11d2, \ - { 0xba, 0x58, 0x0, 0x80, 0x5f, 0x8a, 0x5d, 0xd7 } } - -class nsIXPConnectWrappedNative : public nsISupports -{ -public: - NS_DEFINE_STATIC_IID_ACCESSOR(NS_IXPCONNECT_WRAPPED_NATIVE_IID) - - NS_IMETHOD GetDynamicScriptable(nsIXPCScriptable** p) = 0; - NS_IMETHOD GetArbitraryScriptable(nsIXPCScriptable** p) = 0; - NS_IMETHOD GetJSObject(JSObject** aJSObj) = 0; - NS_IMETHOD GetNative(nsISupports** aObj) = 0; - NS_IMETHOD GetInterfaceInfo(nsIInterfaceInfo** info) = 0; - NS_IMETHOD GetIID(nsIID** iid) = 0; // returns IAllocatator alloc'd copy - NS_IMETHOD DebugDump(int depth) = 0; - NS_IMETHOD SetFinalizeListener(nsIXPConnectFinalizeListener* aListener) = 0; - - // NOT YET IMPLEMTED!!! - NS_IMETHOD GetJSObjectPrototype(JSObject** aJSObj) = 0; - - // XXX other methods? -}; - -/***************************************************************************/ -// {215DBE03-94A7-11d2-BA58-00805F8A5DD7} -#define NS_IXPCONNECT_WRAPPED_JS_IID \ -{ 0x215dbe03, 0x94a7, 0x11d2, \ - { 0xba, 0x58, 0x0, 0x80, 0x5f, 0x8a, 0x5d, 0xd7 } } - -// wrappers around JSObject are passed around as plain nsISupports pointers. -// To manipulate such a wrapper (as opposed to manipulating the wrapped -// JSObject via the wrapper) do a QueryInterface for the -// nsIXPConnectWrappedJSMethods interface -// i.e. 'GET_NS_IID(nsIXPConnectWrappedJSMethods)' -// and use the methods on that interface. (see below) - -/******************************************/ - -// {BED52030-BCA6-11d2-BA79-00805F8A5DD7} -#define NS_IXPCONNECT_WRAPPED_JS_METHODS_IID \ -{ 0xbed52030, 0xbca6, 0x11d2, \ - { 0xba, 0x79, 0x0, 0x80, 0x5f, 0x8a, 0x5d, 0xd7 } } - -class nsIXPConnectWrappedJSMethods : public nsISupports -{ -public: - NS_DEFINE_STATIC_IID_ACCESSOR(NS_IXPCONNECT_WRAPPED_JS_METHODS_IID) - - NS_IMETHOD GetJSObject(JSObject** aJSObj) = 0; - NS_IMETHOD GetInterfaceInfo(nsIInterfaceInfo** info) = 0; - NS_IMETHOD GetIID(nsIID** iid) = 0; // returns IAllocatator alloc'd copy - NS_IMETHOD DebugDump(int depth) = 0; - // XXX other methods? -}; - -/***************************************************************************/ - -/* -* This is a somewhat special interface. It is available from the global -* nsIXPConnect object when native methods have been called. It is only relevent -* to the currently called native method on the given JSContext/thread. Holding -* a reference past that time (or while other native methods are being called) -* will not assure access to this data. -*/ - -// {0FA68A60-8289-11d3-BB1A-00805F8A5DD7} -#define NS_IXPCNATIVECALLCONTEXT_IID \ -{ 0xfa68a60, 0x8289, 0x11d3, \ - { 0xbb, 0x1a, 0x0, 0x80, 0x5f, 0x8a, 0x5d, 0xd7 } } - -class nsIXPCNativeCallContext : public nsISupports -{ -public: - NS_DEFINE_STATIC_IID_ACCESSOR(NS_IXPCNATIVECALLCONTEXT_IID) - - NS_IMETHOD GetCallee(nsISupports** calleep) = 0; - NS_IMETHOD GetCalleeMethodIndex(uint16* indexp) = 0; - NS_IMETHOD GetCalleeWrapper(nsIXPConnectWrappedNative** wrapperp) = 0; - NS_IMETHOD GetJSContext(JSContext** cxp) = 0; - NS_IMETHOD GetArgc(PRUint32* argcp) = 0; - NS_IMETHOD GetArgv(jsval** argvp) = 0; - // This may be NULL if the JS caller is ignoring the result of the call. - NS_IMETHOD GetRetValPtr(jsval** retvalp) = 0; - // Set this if JS_SetPendingException has been called. Return NS_OK or - // else this will be ignored and the native method's nsresult will be - // converted into an exception and thrown into JS as is the normal case. - NS_IMETHOD SetExceptionWasThrown(JSBool threw) = 0; -}; - -/***************************************************************************/ -// {EFAE37B0-946D-11d2-BA58-00805F8A5DD7} -#define NS_IXPCONNECT_IID \ -{ 0xefae37b0, 0x946d, 0x11d2, \ - {0xba, 0x58, 0x0, 0x80, 0x5f, 0x8a, 0x5d, 0xd7} } - -// For use with the service manager -// {CB6593E0-F9B2-11d2-BDD6-000064657374} -#define NS_XPCONNECT_CID \ -{ 0xcb6593e0, 0xf9b2, 0x11d2, { 0xbd, 0xd6, 0x0, 0x0, 0x64, 0x65, 0x73, 0x74 } } - -class nsIXPConnect : public nsISupports -{ -public: - NS_DEFINE_STATIC_IID_ACCESSOR(NS_IXPCONNECT_IID) - NS_DEFINE_STATIC_CID_ACCESSOR(NS_XPCONNECT_CID) - - NS_IMETHOD InitJSContext(JSContext* aJSContext, - JSObject* aGlobalJSObj, - JSBool AddComponentsObject) = 0; - - NS_IMETHOD InitJSContextWithNewWrappedGlobal(JSContext* aJSContext, - nsISupports* aCOMObj, - REFNSIID aIID, - JSBool AddComponentsObject, - nsIXPConnectWrappedNative** aWrapper) = 0; - - // Creates a new Components object, builds a wrapper for it, and adds - // it as the 'Components' property of the JSObject passed in. - NS_IMETHOD AddNewComponentsObject(JSContext* aJSContext, - JSObject* aGlobalJSObj) = 0; - - // Creates a new Components object (with no wrapper) - NS_IMETHOD CreateComponentsObject(nsIXPCComponents** aComponentsObj) = 0; - - NS_IMETHOD WrapNative(JSContext* aJSContext, - nsISupports* aCOMObj, - REFNSIID aIID, - nsIXPConnectWrappedNative** aWrapper) = 0; - - NS_IMETHOD WrapJS(JSContext* aJSContext, - JSObject* aJSObj, - REFNSIID aIID, - nsISupports** aWrapper) = 0; - - NS_IMETHOD GetWrappedNativeOfJSObject(JSContext* aJSContext, - JSObject* aJSObj, - nsIXPConnectWrappedNative** aWrapper) = 0; - - NS_IMETHOD DebugDump(int depth) = 0; - NS_IMETHOD DebugDumpObject(nsISupports* p, int depth) = 0; - - NS_IMETHOD AbandonJSContext(JSContext* aJSContext) = 0; - - NS_IMETHOD SetSecurityManagerForJSContext(JSContext* aJSContext, - nsIXPCSecurityManager* aManager, - PRUint16 flags) = 0; - - NS_IMETHOD GetSecurityManagerForJSContext(JSContext* aJSContext, - nsIXPCSecurityManager** aManager, - PRUint16* flags) = 0; - - NS_IMETHOD GetCurrentJSStack(nsIJSStackFrameLocation** aStack) = 0; - - NS_IMETHOD CreateStackFrameLocation(JSBool isJSFrame, - const char* aFilename, - const char* aFunctionName, - PRInt32 aLineNumber, - nsIJSStackFrameLocation* aCaller, - nsIJSStackFrameLocation** aStack) = 0; - - NS_IMETHOD GetPendingException(nsIXPCException** aException) = 0; - /* pass nsnull to clear pending exception */ - NS_IMETHOD SetPendingException(nsIXPCException* aException) = 0; - - NS_IMETHOD DebugDumpJSStack() = 0; - - NS_IMETHOD GetCurrentNativeCallContext(nsIXPCNativeCallContext** aCC) = 0; - - // XXX other methods? -}; - -#endif /* nsIXPConnect_h___ */ diff --git a/mozilla/js/src/xpconnect/shell/xpcshell.cpp b/mozilla/js/src/xpconnect/shell/xpcshell.cpp index 9fdea203a86..c2575fe634a 100644 --- a/mozilla/js/src/xpconnect/shell/xpcshell.cpp +++ b/mozilla/js/src/xpconnect/shell/xpcshell.cpp @@ -44,7 +44,7 @@ #include "nsIComponentManager.h" #include "jsapi.h" #include "jsprf.h" -#include "xpclog.h" +//#include "xpclog.h" #include "nscore.h" #include "nsIAllocator.h" #include "nsIGenericFactory.h" @@ -283,12 +283,16 @@ DumpXPC(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) nsIXPConnect* xpc = GetXPConnect(); if(xpc) { - xpc->DebugDump(depth); + xpc->DebugDump((int16)depth); NS_RELEASE(xpc); } return JS_TRUE; } +#ifdef GC_MARK_DEBUG +extern "C" JS_FRIEND_DATA(FILE *) js_DumpGCHeap; +#endif + static JSBool GC(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { @@ -688,21 +692,25 @@ main(int argc, char **argv) return 1; if (!JS_DefineFunctions(jscontext, glob, glob_functions)) return 1; - - xpc->InitJSContext(jscontext, glob, JS_TRUE); + if (NS_FAILED(xpc->InitClasses(jscontext, glob))) + return 1; argc--; argv++; result = ProcessArgs(jscontext, glob, argv, argc); - xpc->AbandonJSContext(jscontext); - JSContext *cx; - cxstack->Pop(&cx); - NS_ASSERTION(cx == jscontext, "JS thread context push/pop mismatch"); - NS_RELEASE(xpc); + JS_ClearScope(jscontext, glob); + js_ForceGC(jscontext); + JSContext *oldcx; + cxstack->Pop(&oldcx); + NS_ASSERTION(oldcx == jscontext, "JS thread context push/pop mismatch"); js_ForceGC(jscontext); JS_DestroyContext(jscontext); + xpc->SyncJSContexts(); + xpc->DebugDump(4); + NS_RELEASE(xpc); + if (!rtsvc) { /* no runtime service, so we have to handle shutdown */ JS_DestroyRuntime(rt); diff --git a/mozilla/js/src/xpconnect/src/Makefile.in b/mozilla/js/src/xpconnect/src/Makefile.in index c67b77404aa..5a91ead598e 100644 --- a/mozilla/js/src/xpconnect/src/Makefile.in +++ b/mozilla/js/src/xpconnect/src/Makefile.in @@ -49,6 +49,7 @@ CPPSRCS = \ xpcconvert.cpp \ xpcexception.cpp \ xpcjsid.cpp \ + xpcjsruntime.cpp \ xpclog.cpp \ xpcmaps.cpp \ xpcmodule.cpp \ @@ -62,6 +63,7 @@ CPPSRCS = \ xpcwrappednative.cpp \ xpcwrappednativeclass.cpp \ xpcwrappednativejsops.cpp \ + xpcwrappednativescope.cpp \ $(NULL) include $(topsrcdir)/config/config.mk diff --git a/mozilla/js/src/xpconnect/src/makefile.win b/mozilla/js/src/xpconnect/src/makefile.win index a4a0a16e876..e6e04e311c1 100644 --- a/mozilla/js/src/xpconnect/src/makefile.win +++ b/mozilla/js/src/xpconnect/src/makefile.win @@ -53,19 +53,21 @@ OBJS= \ .\$(OBJDIR)\xpcconvert.obj \ .\$(OBJDIR)\xpcexception.obj \ .\$(OBJDIR)\xpcjsid.obj \ + .\$(OBJDIR)\xpcjsruntime.obj \ .\$(OBJDIR)\xpclog.obj \ .\$(OBJDIR)\xpcmaps.obj \ .\$(OBJDIR)\xpcmodule.obj \ .\$(OBJDIR)\xpcnativecallcontext.obj \ + .\$(OBJDIR)\xpcruntimesvc.obj \ .\$(OBJDIR)\xpcstack.obj \ .\$(OBJDIR)\xpcthreadcontext.obj \ .\$(OBJDIR)\xpcthrower.obj \ - .\$(OBJDIR)\xpcruntimesvc.obj \ .\$(OBJDIR)\xpcwrappedjs.obj \ .\$(OBJDIR)\xpcwrappedjsclass.obj \ .\$(OBJDIR)\xpcwrappednative.obj \ .\$(OBJDIR)\xpcwrappednativeclass.obj \ .\$(OBJDIR)\xpcwrappednativejsops.obj \ + .\$(OBJDIR)\xpcwrappednativescope.obj \ $(NULL) LINCS=-I$(PUBLIC)\xpconnect -I$(PUBLIC)\xpcom -I$(PUBLIC)\js \ diff --git a/mozilla/js/src/xpconnect/src/nsXPConnect.cpp b/mozilla/js/src/xpconnect/src/nsXPConnect.cpp index 1bafb854687..a86f45ee129 100644 --- a/mozilla/js/src/xpconnect/src/nsXPConnect.cpp +++ b/mozilla/js/src/xpconnect/src/nsXPConnect.cpp @@ -36,16 +36,8 @@ #include "xpcprivate.h" -#define CONTEXT_MAP_SIZE 16 -#define JS_MAP_SIZE 256 -#define NATIVE_MAP_SIZE 256 -#define JS_CLASS_MAP_SIZE 256 -#define NATIVE_CLASS_MAP_SIZE 256 - NS_IMPL_ISUPPORTS1(nsXPConnect, nsIXPConnect) -const char XPC_COMPONENTS_STR[] = "Components"; - nsXPConnect* nsXPConnect::gSelf = nsnull; /***************************************************************************/ @@ -77,13 +69,7 @@ xpcPerThreadData::~xpcPerThreadData() { NS_IF_RELEASE(mException); if(mCX) - { - nsresult rv; - NS_WITH_SERVICE(nsIXPConnect, xpc, nsIXPConnect::GetCID(), &rv); - if(NS_SUCCEEDED(rv)) - xpc->AbandonJSContext(mCX); JS_DestroyContext(mCX); - } } nsIXPCException* @@ -127,7 +113,7 @@ xpcPerThreadData::GetJSContext() glob = JS_NewObject(mCX, &global_class, NULL, NULL); if(!glob || !JS_InitStandardClasses(mCX, glob) || - NS_FAILED(xpc->InitJSContext(mCX, glob, JS_TRUE))) + NS_FAILED(xpc->InitClasses(mCX, glob))) { JS_DestroyContext(mCX); mCX = nsnull; @@ -186,10 +172,10 @@ GetPerThreadData() /***************************************************************************/ -AutoPushCompatibleJSContext::AutoPushCompatibleJSContext(JSContext *cx, nsXPConnect* xpc /*= nsnull*/) +AutoPushCompatibleJSContext::AutoPushCompatibleJSContext(JSRuntime* rt, nsXPConnect* xpc /*= nsnull*/) : mCX(nsnull) { - NS_ASSERTION(cx, "pushing null cx"); + NS_ASSERTION(rt, "bad JSRuntime"); mContextStack = nsXPConnect::GetContextStack(xpc); if(mContextStack) { @@ -198,8 +184,7 @@ AutoPushCompatibleJSContext::AutoPushCompatibleJSContext(JSContext *cx, nsXPConn if(NS_SUCCEEDED(mContextStack->Peek(¤t))) { // Is the current runtime compatible? - if(current == cx || - (current && JS_GetRuntime(current) == JS_GetRuntime(cx))) + if(current && JS_GetRuntime(current) == rt) { mCX = current; } @@ -214,8 +199,7 @@ AutoPushCompatibleJSContext::AutoPushCompatibleJSContext(JSContext *cx, nsXPConn if(data) { JSContext* ourCX = data->GetJSContext(); - if(ourCX && - JS_GetRuntime(ourCX) == JS_GetRuntime(cx) && + if(ourCX && JS_GetRuntime(ourCX) == rt && NS_SUCCEEDED(mContextStack->Push(ourCX))) { mCX = ourCX; @@ -248,6 +232,51 @@ AutoPushCompatibleJSContext::~AutoPushCompatibleJSContext() } /***************************************************************************/ +// has to go somewhere... + +nsXPCArbitraryScriptable::nsXPCArbitraryScriptable() +{ + NS_INIT_REFCNT(); + NS_ADDREF_THIS(); +} + +/***************************************************************************/ +/***************************************************************************/ + +nsXPConnect::nsXPConnect() + : mRuntime(nsnull), + mArbitraryScriptable(nsnull), + mInterfaceInfoManager(nsnull), + mThrower(nsnull), + mContextStack(nsnull) +{ + NS_INIT_REFCNT(); + + // ignore result - if the runtime service is not ready to rumble + // then we'll set this up later as needed. + CreateRuntime(); + + mArbitraryScriptable = new nsXPCArbitraryScriptable(); + + mInterfaceInfoManager = XPTI_GetInterfaceInfoManager(); + mThrower = new XPCJSThrower(JS_TRUE); + + nsServiceManager::GetService("nsThreadJSContextStack", + NS_GET_IID(nsIJSContextStack), + (nsISupports **)&mContextStack); +} + +nsXPConnect::~nsXPConnect() +{ + if(mRuntime) + delete mRuntime; + if(mThrower) + delete mThrower; + NS_IF_RELEASE(mArbitraryScriptable); + NS_IF_RELEASE(mInterfaceInfoManager); + NS_IF_RELEASE(mContextStack); + gSelf = nsnull; +} // static nsXPConnect* @@ -256,40 +285,39 @@ nsXPConnect::GetXPConnect() if(!gSelf) { gSelf = new nsXPConnect(); - if (!gSelf) { - return nsnull; - } - if (!gSelf->mContextMap || + if (!gSelf || !gSelf->mArbitraryScriptable || !gSelf->mInterfaceInfoManager || !gSelf->mThrower || !gSelf->mContextStack) { // ctor failed to create an acceptable instance - delete gSelf; - gSelf = nsnull; + if(gSelf) + { + delete gSelf; + gSelf = nsnull; + } + return nsnull; } else { - // Keep the singleton alive + // Initial extra ref to keep the singleton alive + // balanced by explicit call to ReleaseXPConnectSingleton() NS_ADDREF(gSelf); } } - if(gSelf) - { - NS_ADDREF(gSelf); - } + NS_ADDREF(gSelf); return gSelf; } void -nsXPConnect::FreeXPConnect() +nsXPConnect::ReleaseXPConnectSingleton() { nsXPConnect* xpc = gSelf; if (xpc) { nsrefcnt cnt; NS_RELEASE2(xpc, cnt); -#if defined(DEBUG_kipp) || defined(DEBUG_jband) +#if defined(DEBUG_jband) if (0 != cnt) { printf("*** dangling reference to nsXPConnect: refcnt=%d\n", cnt); } @@ -329,25 +357,6 @@ nsXPConnect::GetContextStack(nsXPConnect* xpc /*= nsnull*/) return cs; } -// static -XPCContext* -nsXPConnect::GetContext(JSContext* cx, nsXPConnect* xpc /*= nsnull*/) -{ - NS_PRECONDITION(cx,"bad param"); - - XPCContext* xpcc; - nsXPConnect* xpcl = xpc; - - if(!xpcl && !(xpcl = GetXPConnect())) - return nsnull; - xpcc = xpcl->mContextMap->Find(cx); - if(!xpcc) - xpcc = xpcl->NewContext(cx, JS_GetGlobalObject(cx)); - if(!xpc) - NS_RELEASE(xpcl); - return xpcc; -} - // static XPCJSThrower* nsXPConnect::GetJSThrower(nsXPConnect* xpc /*= nsnull */) @@ -363,6 +372,43 @@ nsXPConnect::GetJSThrower(nsXPConnect* xpc /*= nsnull */) return thrower; } +// static +XPCJSRuntime* +nsXPConnect::GetRuntime(nsXPConnect* xpc /*= nsnull*/) +{ + XPCJSRuntime* rt; + nsXPConnect* xpcl = xpc; + + if(!xpcl && !(xpcl = GetXPConnect())) + return nsnull; + rt = xpcl->EnsureRuntime() ? xpcl->mRuntime : nsnull; + if(!xpc) + NS_RELEASE(xpcl); + return rt; +} + +// static +XPCContext* +nsXPConnect::GetContext(JSContext* cx, nsXPConnect* xpc /*= nsnull*/) +{ + NS_PRECONDITION(cx,"bad param"); + + XPCContext* xpcc; + nsXPConnect* xpcl = xpc; + + if(!xpcl && !(xpcl = GetXPConnect())) + return nsnull; + + if(xpcl->EnsureRuntime() && + xpcl->mRuntime->GetJSRuntime() == JS_GetRuntime(cx)) + xpcc = xpcl->mRuntime->GetXPCContext(cx); + else + xpcc = nsnull; + if(!xpc) + NS_RELEASE(xpcl); + return xpcc; +} + // static JSBool nsXPConnect::IsISupportsDescendant(nsIInterfaceInfo* info) @@ -370,13 +416,11 @@ nsXPConnect::IsISupportsDescendant(nsIInterfaceInfo* info) if(!info) return JS_FALSE; - nsIInterfaceInfo* oldest = info; - nsIInterfaceInfo* parent; + nsCOMPtr oldest = info; + nsCOMPtr parent; - NS_ADDREF(oldest); - while(NS_SUCCEEDED(oldest->GetParent(&parent))) + while(NS_SUCCEEDED(oldest->GetParent(getter_AddRefs(parent)))) { - NS_RELEASE(oldest); oldest = parent; } @@ -387,314 +431,165 @@ nsXPConnect::IsISupportsDescendant(nsIInterfaceInfo* info) retval = iid->Equals(NS_GET_IID(nsISupports)); nsAllocator::Free(iid); } - NS_RELEASE(oldest); return retval; } -nsXPConnect::nsXPConnect() - : mContextMap(nsnull), - mArbitraryScriptable(nsnull), - mInterfaceInfoManager(nsnull), - mThrower(nsnull), - mContextStack(nsnull) +JSBool +nsXPConnect::CreateRuntime() { - NS_INIT_REFCNT(); - - nsXPCWrappedNativeClass::OneTimeInit(); - mContextMap = JSContext2XPCContextMap::newMap(CONTEXT_MAP_SIZE); - mArbitraryScriptable = new nsXPCArbitraryScriptable(); - - // XXX later this will be a service - mInterfaceInfoManager = XPTI_GetInterfaceInfoManager(); - mThrower = new XPCJSThrower(JS_TRUE); - - nsServiceManager::GetService("nsThreadJSContextStack", - NS_GET_IID(nsIJSContextStack), - (nsISupports **)&mContextStack); -} - -nsXPConnect::~nsXPConnect() -{ - if(mContextMap) - delete mContextMap; - if(mArbitraryScriptable) - NS_RELEASE(mArbitraryScriptable); - // XXX later this will be a service - if(mInterfaceInfoManager) - NS_RELEASE(mInterfaceInfoManager); - if(mThrower) - delete mThrower; - if(mContextStack) - nsServiceManager::ReleaseService("nsThreadJSContextStack", mContextStack); - gSelf = nsnull; -} - -NS_IMETHODIMP -nsXPConnect::InitJSContext(JSContext* aJSContext, - JSObject* aGlobalJSObj, - JSBool AddComponentsObject) -{ - AUTO_PUSH_JSCONTEXT2(aJSContext, this); - if(!aJSContext) - { - XPC_LOG_ERROR(("nsXPConnect::InitJSContext failed with null pointer")); - return NS_ERROR_NULL_POINTER; - } - - if(!aGlobalJSObj) - aGlobalJSObj = JS_GetGlobalObject(aJSContext); - if(aGlobalJSObj && - !mContextMap->Find(aJSContext)) - { - XPCContext* xpcc; - if(nsnull != (xpcc = NewContext(aJSContext, aGlobalJSObj))) - { - SET_CALLER_NATIVE(xpcc); - if(!AddComponentsObject || - NS_SUCCEEDED(AddNewComponentsObject(aJSContext, aGlobalJSObj))) - { - return NS_OK; - } - } - } - XPC_LOG_ERROR(("nsXPConnect::InitJSContext failed")); - return NS_ERROR_FAILURE; -} - -NS_IMETHODIMP -nsXPConnect::InitJSContextWithNewWrappedGlobal(JSContext* aJSContext, - nsISupports* aCOMObj, - REFNSIID aIID, - JSBool AddComponentsObject, - nsIXPConnectWrappedNative** aWrapper) -{ - AUTO_PUSH_JSCONTEXT2(aJSContext, this); - nsXPCWrappedNative* wrapper = nsnull; - XPCContext* xpcc = nsnull; - if(!mContextMap->Find(aJSContext) && - nsnull != (xpcc = NewContext(aJSContext, nsnull, JS_FALSE))) - { - SET_CALLER_NATIVE(xpcc); - wrapper = nsXPCWrappedNative::GetNewOrUsedWrapper(xpcc, aCOMObj, - aIID, nsnull); - if(wrapper) - { - if(JS_InitStandardClasses(aJSContext, wrapper->GetJSObject()) && - xpcc->Init(wrapper->GetJSObject()) && - (!AddComponentsObject || - NS_SUCCEEDED(AddNewComponentsObject(aJSContext, nsnull)))) - { - *aWrapper = wrapper; - return NS_OK; - } - } - } - if(wrapper) - NS_RELEASE(wrapper); - if(xpcc) - { - mContextMap->Remove(xpcc); - delete xpcc; - } - XPC_LOG_ERROR(("nsXPConnect::InitJSContextWithNewWrappedGlobal failed")); - *aWrapper = nsnull; - return NS_ERROR_FAILURE; -} - -NS_IMETHODIMP -nsXPConnect::AddNewComponentsObject(JSContext* aJSContext, - JSObject* aGlobalJSObj) -{ - AUTO_PUSH_JSCONTEXT2(aJSContext, this); - SET_CALLER_NATIVE(aJSContext); - JSBool success; + NS_ASSERTION(!mRuntime,"CreateRuntime called but mRuntime already init'd"); + JSRuntime* rt; nsresult rv; - - if(!aJSContext) + NS_WITH_SERVICE(nsIJSRuntimeService, rtsvc, "nsJSRuntimeService", &rv); + if(NS_SUCCEEDED(rv) && NS_SUCCEEDED(rtsvc->GetRuntime(&rt))) { - XPC_LOG_ERROR(("nsXPConnect::AddNewComponentsObject failed with null pointer")); - return NS_ERROR_NULL_POINTER; + mRuntime = XPCJSRuntime::newXPCJSRuntime(this, rt); } + return nsnull != mRuntime; +} - if(!aGlobalJSObj && !(aGlobalJSObj = JS_GetGlobalObject(aJSContext))) +/***************************************************************************/ +/***************************************************************************/ +// nsIXPConnect interface methods... + + +/* void initClasses (in JSContextPtr aJSContext, in JSObjectPtr aGlobalJSObj); */ +NS_IMETHODIMP +nsXPConnect::InitClasses(JSContext * aJSContext, JSObject * aGlobalJSObj) +{ + NS_ENSURE_ARG_POINTER(aJSContext); + NS_ENSURE_ARG_POINTER(aGlobalJSObj); + + AUTO_PUSH_JSCONTEXT2(aJSContext, this); + + // This also ensures that we have a valid runtime + XPCContext* xpcc = GetContext(aJSContext, this); + if(!xpcc) + return NS_ERROR_FAILURE; + + SET_CALLER_NATIVE(xpcc); + + if(!xpc_InitWrappedNativeJSOps()) + return NS_ERROR_FAILURE; + + if(!nsXPCWrappedJSClass::InitClasses(xpcc, aGlobalJSObj)) + return NS_ERROR_FAILURE; + + if(!nsXPCComponents::AttachNewComponentsObject(xpcc, aGlobalJSObj)) + return NS_ERROR_FAILURE; + + return NS_OK; +} + +/* nsIXPConnectWrappedNative initClassesWithNewWrappedGlobal (in JSContextPtr aJSContext, in nsISupports aCOMObj, in nsIIDRef aIID); */ +NS_IMETHODIMP +nsXPConnect::InitClassesWithNewWrappedGlobal(JSContext * aJSContext, nsISupports *aCOMObj, const nsIID & aIID, nsIXPConnectWrappedNative **_retval) +{ + // XXX need to implement InitClassesWithNewWrappedGlobal + return NS_ERROR_NOT_IMPLEMENTED; +} + +/* nsIXPConnectWrappedNative wrapNative (in JSContextPtr aJSContext, in JSObjectPtr aJSObj, in nsISupports aCOMObj, in nsIIDRef aIID); */ +NS_IMETHODIMP +nsXPConnect::WrapNative(JSContext * aJSContext, JSObject * aJSObj, nsISupports *aCOMObj, const nsIID & aIID, nsIXPConnectWrappedNative **_retval) +{ + NS_ENSURE_ARG_POINTER(aJSContext); + NS_ENSURE_ARG_POINTER(aJSObj); + NS_ENSURE_ARG_POINTER(aCOMObj); + NS_ENSURE_ARG_POINTER(_retval); + + AUTO_PUSH_JSCONTEXT2(aJSContext, this); + *_retval = nsnull; + + // This also ensures that we have a valid runtime + XPCContext* xpcc = GetContext(aJSContext, this); + if(!xpcc) + return NS_ERROR_FAILURE; + + SET_CALLER_NATIVE(xpcc); + + nsXPCWrappedNativeScope* scope = + nsXPCWrappedNativeScope::FindInJSObjectScope(xpcc, aJSObj); + if(!scope) + return NS_ERROR_FAILURE; + + nsresult rv; + nsXPCWrappedNative* wrapper = + nsXPCWrappedNative::GetNewOrUsedWrapper(xpcc, scope, aJSObj, + aCOMObj, aIID, &rv); + if(!wrapper) { - XPC_LOG_ERROR(("nsXPConnect::AddNewComponentsObject failed - no global object")); + if(NS_FAILED(rv)) + return rv; return NS_ERROR_FAILURE; } - nsIXPCComponents* comp; - if(NS_FAILED(rv = CreateComponentsObject(&comp))) - return rv; + *_retval = wrapper; + return NS_OK; +} - nsIXPConnectWrappedNative* comp_wrapper; - if(NS_FAILED(WrapNative(aJSContext, comp, - nsIXPCComponents::GetIID(), &comp_wrapper))) - { - XPC_LOG_ERROR(("nsXPConnect::AddNewComponentsObject failed - could not build wrapper")); - NS_RELEASE(comp); +/* nsISupports wrapJS (in JSContextPtr aJSContext, in JSObjectPtr aJSObj, in nsIIDRef aIID); */ +NS_IMETHODIMP +nsXPConnect::WrapJS(JSContext * aJSContext, JSObject * aJSObj, const nsIID & aIID, nsISupports **_retval) +{ + NS_ENSURE_ARG_POINTER(aJSContext); + NS_ENSURE_ARG_POINTER(aJSObj); + NS_ENSURE_ARG_POINTER(_retval); + + AUTO_PUSH_JSCONTEXT2(aJSContext, this); + *_retval = nsnull; + + // This also ensures that we have a valid runtime + XPCContext* xpcc = GetContext(aJSContext, this); + if(!xpcc) return NS_ERROR_FAILURE; - } - JSObject* comp_jsobj; - comp_wrapper->GetJSObject(&comp_jsobj); - jsval comp_jsval = OBJECT_TO_JSVAL(comp_jsobj); - success = JS_SetProperty(aJSContext, aGlobalJSObj, - "Components", &comp_jsval); - NS_RELEASE(comp_wrapper); - NS_RELEASE(comp); - return success ? NS_OK : NS_ERROR_FAILURE; -} + SET_CALLER_NATIVE(xpcc); + + nsXPCWrappedJS* wrapper = + nsXPCWrappedJS::GetNewOrUsedWrapper(xpcc, aJSObj, aIID); + if(!wrapper) + return NS_ERROR_FAILURE; + + *_retval = wrapper; + return NS_OK; +} + +/* nsIXPConnectWrappedNative getWrappedNativeOfJSObject (in JSContextPtr aJSContext, in JSObjectPtr aJSObj); */ NS_IMETHODIMP -nsXPConnect::CreateComponentsObject(nsIXPCComponents** aComponentsObj) +nsXPConnect::GetWrappedNativeOfJSObject(JSContext * aJSContext, JSObject * aJSObj, nsIXPConnectWrappedNative **_retval) { - if(!aComponentsObj) - return NS_ERROR_NULL_POINTER; + NS_ENSURE_ARG_POINTER(aJSContext); + NS_ENSURE_ARG_POINTER(aJSObj); + NS_ENSURE_ARG_POINTER(_retval); - nsIXPCComponents* obj; - if(nsnull != (obj = *aComponentsObj = new nsXPCComponents())) - { - NS_ADDREF(obj); - return NS_OK; - } - XPC_LOG_ERROR(("nsXPConnect::CreateComponentsObject failed")); - return NS_ERROR_OUT_OF_MEMORY; -} - -XPCContext* -nsXPConnect::NewContext(JSContext* cx, JSObject* global, - JSBool doInit /*= JS_TRUE*/) -{ - XPCContext* xpcc; - NS_PRECONDITION(cx,"bad param"); - NS_PRECONDITION(!mContextMap->Find(cx),"bad param"); - - xpcc = XPCContext::newXPCContext(cx, global, - JS_MAP_SIZE, - NATIVE_MAP_SIZE, - JS_CLASS_MAP_SIZE, - NATIVE_CLASS_MAP_SIZE); - if(doInit && xpcc && !xpcc->Init()) - { - XPC_LOG_ERROR(("nsXPConnect::NewContext failed")); - delete xpcc; - xpcc = nsnull; - } - if(xpcc) - mContextMap->Add(xpcc); - return xpcc; -} - -NS_IMETHODIMP -nsXPConnect::WrapNative(JSContext* aJSContext, - nsISupports* aCOMObj, - REFNSIID aIID, - nsIXPConnectWrappedNative** aWrapper) -{ - NS_PRECONDITION(aJSContext,"bad param"); - NS_PRECONDITION(aCOMObj,"bad param"); - NS_PRECONDITION(aWrapper,"bad param"); - - AUTO_PUSH_JSCONTEXT2(aJSContext, this); - XPCContext* xpcc = nsXPConnect::GetContext(aJSContext, this); - if(xpcc) - { - SET_CALLER_NATIVE(xpcc); - nsXPCWrappedNative* wrapper = - nsXPCWrappedNative::GetNewOrUsedWrapper(xpcc, aCOMObj, - aIID, nsnull); - if(wrapper) - { - *aWrapper = wrapper; - return NS_OK; - } - } - XPC_LOG_ERROR(("nsXPConnect::WrapNative failed")); - *aWrapper = nsnull; - return NS_ERROR_FAILURE; -} - -NS_IMETHODIMP -nsXPConnect::WrapJS(JSContext* aJSContext, - JSObject* aJSObj, - REFNSIID aIID, - nsISupports** aWrapper) -{ - NS_PRECONDITION(aJSContext,"bad param"); - NS_PRECONDITION(aJSObj,"bad param"); - NS_PRECONDITION(aWrapper,"bad param"); - - AUTO_PUSH_JSCONTEXT2(aJSContext, this); - XPCContext* xpcc = nsXPConnect::GetContext(aJSContext, this); - if(xpcc) - { - SET_CALLER_NATIVE(xpcc); - nsXPCWrappedJS* wrapper = - nsXPCWrappedJS::GetNewOrUsedWrapper(xpcc, aJSObj, aIID); - if(wrapper) - { - *aWrapper = wrapper; - return NS_OK; - } - } - XPC_LOG_ERROR(("nsXPConnect::WrapJS failed")); - *aWrapper = nsnull; - return NS_ERROR_FAILURE; -} - -NS_IMETHODIMP -nsXPConnect::GetWrappedNativeOfJSObject(JSContext* aJSContext, - JSObject* aJSObj, - nsIXPConnectWrappedNative** aWrapper) -{ - NS_PRECONDITION(aJSContext,"bad param"); - NS_PRECONDITION(aJSObj,"bad param"); - NS_PRECONDITION(aWrapper,"bad param"); SET_CALLER_NATIVE(aJSContext); - if(!(*aWrapper = nsXPCWrappedNativeClass::GetWrappedNativeOfJSObject(aJSContext,aJSObj))) - return NS_ERROR_UNEXPECTED; - NS_ADDREF(*aWrapper); - return NS_OK; -} - -NS_IMETHODIMP -nsXPConnect::AbandonJSContext(JSContext* aJSContext) -{ - NS_PRECONDITION(aJSContext,"bad param"); - NS_PRECONDITION(mContextMap,"bad state"); - - AUTO_PUSH_JSCONTEXT2(aJSContext, this); - XPCContext* xpcc = mContextMap->Find(aJSContext); - if(!xpcc) + nsIXPConnectWrappedNative* wrapper = + nsXPCWrappedNativeClass::GetWrappedNativeOfJSObject(aJSContext, aJSObj); + if(wrapper) { - SET_CALLER_NATIVE(xpcc); - NS_ASSERTION(0,"called AbandonJSContext for context that's not init'd"); + NS_ADDREF(wrapper); + *_retval = wrapper; return NS_OK; } + // else... + *_retval = nsnull; + return NS_ERROR_FAILURE; +} - mContextMap->Remove(xpcc); - // XPCContext notifies 'users' of its destruction. - delete xpcc; - return NS_OK; -} - +/* void setSecurityManagerForJSContext (in JSContextPtr aJSContext, in nsIXPCSecurityManager aManager, in PRUint16 flags); */ NS_IMETHODIMP -nsXPConnect::SetSecurityManagerForJSContext(JSContext* aJSContext, - nsIXPCSecurityManager* aManager, - PRUint16 flags) +nsXPConnect::SetSecurityManagerForJSContext(JSContext * aJSContext, nsIXPCSecurityManager *aManager, PRUint16 flags) { - if(!aJSContext) - { - NS_ASSERTION(0,"called SetSecurityManagerForJSContext with null pointer"); - return NS_ERROR_NULL_POINTER; - } + NS_ENSURE_ARG_POINTER(aJSContext); - XPCContext* xpcc = mContextMap->Find(aJSContext); + // This also ensures that we have a valid runtime + XPCContext* xpcc = GetContext(aJSContext, this); if(!xpcc) - { - NS_ASSERTION(0,"called SetSecurityManagerForJSContext for context that's not init'd"); - return NS_ERROR_INVALID_ARG; - } + return NS_ERROR_FAILURE; + + SET_CALLER_NATIVE(xpcc); NS_IF_ADDREF(aManager); nsIXPCSecurityManager* oldManager = xpcc->GetSecurityManager(); @@ -703,160 +598,121 @@ nsXPConnect::SetSecurityManagerForJSContext(JSContext* aJSContext, xpcc->SetSecurityManager(aManager); xpcc->SetSecurityManagerFlags(flags); return NS_OK; -} +} +/* void getSecurityManagerForJSContext (in JSContextPtr aJSContext, out nsIXPCSecurityManager aManager, out PRUint16 flags); */ NS_IMETHODIMP -nsXPConnect::GetSecurityManagerForJSContext(JSContext* aJSContext, - nsIXPCSecurityManager** aManager, - PRUint16* flags) +nsXPConnect::GetSecurityManagerForJSContext(JSContext * aJSContext, nsIXPCSecurityManager **aManager, PRUint16 *flags) { - if(!aJSContext || !aManager || !flags) - { - NS_ASSERTION(0,"called GetSecurityManagerForJSContext with null pointer"); - return NS_ERROR_NULL_POINTER; - } + NS_ENSURE_ARG_POINTER(aJSContext); + NS_ENSURE_ARG_POINTER(aManager); + NS_ENSURE_ARG_POINTER(flags); - XPCContext* xpcc = mContextMap->Find(aJSContext); + // This also ensures that we have a valid runtime + XPCContext* xpcc = GetContext(aJSContext, this); if(!xpcc) - { - NS_ASSERTION(0,"called GetSecurityManagerForJSContext for context that's not init'd"); - return NS_ERROR_INVALID_ARG; - } + return NS_ERROR_FAILURE; - if(nsnull != (*aManager = xpcc->GetSecurityManager())) - NS_ADDREF(*aManager); + SET_CALLER_NATIVE(xpcc); + + nsIXPCSecurityManager* manager = xpcc->GetSecurityManager(); + NS_IF_ADDREF(manager); + *aManager = manager; *flags = xpcc->GetSecurityManagerFlags(); return NS_OK; -} +} +/* nsIJSStackFrameLocation createStackFrameLocation (in PRBool isJSFrame, in string aFilename, in string aFunctionName, in PRInt32 aLineNumber, in nsIJSStackFrameLocation aCaller); */ NS_IMETHODIMP -nsXPConnect::GetCurrentJSStack(nsIJSStackFrameLocation** aStack) +nsXPConnect::CreateStackFrameLocation(PRBool isJSFrame, const char *aFilename, const char *aFunctionName, PRInt32 aLineNumber, nsIJSStackFrameLocation *aCaller, nsIJSStackFrameLocation **_retval) { - NS_ENSURE_ARG_POINTER(aStack); + NS_ENSURE_ARG_POINTER(_retval); + + nsIJSStackFrameLocation* location = + XPCJSStack::CreateStackFrameLocation(isJSFrame, + aFilename, + aFunctionName, + aLineNumber, + aCaller); + *_retval = location; + return location ? NS_OK : NS_ERROR_OUT_OF_MEMORY; +} + +/* readonly attribute nsIJSStackFrameLocation CurrentJSStack; */ +NS_IMETHODIMP +nsXPConnect::GetCurrentJSStack(nsIJSStackFrameLocation * *aCurrentJSStack) +{ + NS_ENSURE_ARG_POINTER(aCurrentJSStack); JSContext* cx; - if(NS_FAILED(mContextStack->Peek(&cx)) || !cx) - { - // no current context available - *aStack = nsnull; - return NS_OK; - } - - *aStack = XPCJSStack::CreateStack(cx); + // is there a current context available? + if(mContextStack && NS_SUCCEEDED(mContextStack->Peek(&cx)) && cx) + *aCurrentJSStack = XPCJSStack::CreateStack(cx); + else + *aCurrentJSStack = nsnull; return NS_OK; -} +} +/* readonly attribute nsIXPCNativeCallContext CurrentNativeCallContext; */ NS_IMETHODIMP -nsXPConnect::CreateStackFrameLocation(JSBool isJSFrame, - const char* aFilename, - const char* aFunctionName, - PRInt32 aLineNumber, - nsIJSStackFrameLocation* aCaller, - nsIJSStackFrameLocation** aStack) +nsXPConnect::GetCurrentNativeCallContext(nsIXPCNativeCallContext * *aCurrentNativeCallContext) { - if(!aStack) - { - NS_ASSERTION(0,"called CreateStackFrameLocation with null pointer"); - return NS_ERROR_NULL_POINTER; - } - *aStack = XPCJSStack::CreateStackFrameLocation(isJSFrame, - aFilename, - aFunctionName, - aLineNumber, - aCaller); - return *aStack ? NS_OK : NS_ERROR_OUT_OF_MEMORY; -} - -NS_IMETHODIMP -nsXPConnect::GetPendingException(nsIXPCException** aException) -{ - if(!aException) - return NS_ERROR_NULL_POINTER; - - xpcPerThreadData* data = GetPerThreadData(); - if(!data) - { - *aException = nsnull; - return NS_ERROR_FAILURE; - } - - *aException = data->GetException(); - return NS_OK; -} - -NS_IMETHODIMP -nsXPConnect::SetPendingException(nsIXPCException* aException) -{ - xpcPerThreadData* data = GetPerThreadData(); - if(!data) - return NS_ERROR_FAILURE; - - data->SetException(aException); - return NS_OK; -} - -NS_IMETHODIMP -nsXPConnect::GetCurrentNativeCallContext(nsIXPCNativeCallContext** aCC) -{ - NS_ENSURE_ARG_POINTER(aCC); + NS_ENSURE_ARG_POINTER(aCurrentNativeCallContext); JSContext* cx; XPCContext* xpcc; - if(NS_FAILED(mContextStack->Peek(&cx)) || !cx || - !(xpcc = mContextMap->Find(cx))) + + if(mContextStack && NS_SUCCEEDED(mContextStack->Peek(&cx)) && cx && + nsnull != (xpcc = GetContext(cx, this))) { - // no current context available - *aCC = nsnull; + *aCurrentNativeCallContext = xpcc->GetNativeCallContext(); + return NS_OK; + } + //else... + *aCurrentNativeCallContext = nsnull; + return NS_ERROR_FAILURE; +} + +/* attribute nsIXPCException PendingException; */ +NS_IMETHODIMP +nsXPConnect::GetPendingException(nsIXPCException * *aPendingException) +{ + NS_ENSURE_ARG_POINTER(aPendingException); + + xpcPerThreadData* data = GetPerThreadData(); + if(!data) + { + *aPendingException = nsnull; return NS_ERROR_FAILURE; } - // these things are not refcounted - *aCC = xpcc->GetNativeCallContext(); + *aPendingException = data->GetException(); return NS_OK; -} - -/***************************************************************************/ -// has to go somewhere... -nsXPCArbitraryScriptable::nsXPCArbitraryScriptable() -{ - NS_INIT_REFCNT(); - NS_ADDREF_THIS(); -} - -#ifdef DEBUG -JS_STATIC_DLL_CALLBACK(intN) -ContextMapDumpEnumerator(JSHashEntry *he, intN i, void *arg) -{ - ((XPCContext*)he->value)->DebugDump(*(int*)arg); - return HT_ENUMERATE_NEXT; -} -#endif +} NS_IMETHODIMP -nsXPConnect::DebugDump(int depth) +nsXPConnect::SetPendingException(nsIXPCException * aPendingException) { -#ifdef DEBUG - depth-- ; - XPC_LOG_ALWAYS(("nsXPConnect @ %x with mRefCnt = %d", this, mRefCnt)); - XPC_LOG_INDENT(); - XPC_LOG_ALWAYS(("mArbitraryScriptable @ %x", mArbitraryScriptable)); - XPC_LOG_ALWAYS(("mInterfaceInfoManager @ %x", mInterfaceInfoManager)); - XPC_LOG_ALWAYS(("mContextMap @ %x with %d context(s)", \ - mContextMap, mContextMap ? mContextMap->Count() : 0)); - // iterate contexts... - if(depth && mContextMap && mContextMap->Count()) - { - XPC_LOG_INDENT(); - mContextMap->Enumerate(ContextMapDumpEnumerator, &depth); - XPC_LOG_OUTDENT(); - } - XPC_LOG_OUTDENT(); -#endif - return NS_OK; -} + xpcPerThreadData* data = GetPerThreadData(); + if(!data) + return NS_ERROR_FAILURE; + data->SetException(aPendingException); + return NS_OK; +} + +/* void syncJSContexts (); */ NS_IMETHODIMP -nsXPConnect::DebugDumpObject(nsISupports* p, int depth) +nsXPConnect::SyncJSContexts(void) +{ + if(mRuntime) + mRuntime->SyncXPCContextList(); + return NS_OK; +} + +/* void debugDumpObject (in nsISupports aCOMObj, in short depth); */ +NS_IMETHODIMP +nsXPConnect::DebugDumpObject(nsISupports *p, PRInt16 depth) { #ifdef DEBUG if(!depth) @@ -873,7 +729,8 @@ nsXPConnect::DebugDumpObject(nsISupports* p, int depth) nsIXPConnectWrappedNative* wn; nsIXPConnectWrappedJSMethods* wjsm; - if(NS_SUCCEEDED(p->QueryInterface(nsIXPConnect::GetIID(),(void**)&xpc))) + if(NS_SUCCEEDED(p->QueryInterface(nsIXPConnect::GetIID(), + (void**)&xpc))) { XPC_LOG_ALWAYS(("Dumping a nsIXPConnect...")); xpc->DebugDump(depth); @@ -908,13 +765,14 @@ nsXPConnect::DebugDumpObject(nsISupports* p, int depth) NS_RELEASE(wjsm); } else - XPC_LOG_ALWAYS(("*** Cound not dump the nsISupports @ %x", p)); + XPC_LOG_ALWAYS(("*** Could not dump the nsISupports @ %x", p)); #endif return NS_OK; -} +} +/* void debugDumpJSStack (); */ NS_IMETHODIMP -nsXPConnect::DebugDumpJSStack() +nsXPConnect::DebugDumpJSStack(void) { #ifdef DEBUG @@ -948,4 +806,28 @@ nsXPConnect::DebugDumpJSStack() NS_RELEASE(stack); #endif return NS_OK; -} +} + + +/* void debugDump (in short depth); */ +NS_IMETHODIMP +nsXPConnect::DebugDump(PRInt16 depth) +{ +#ifdef DEBUG + depth-- ; + XPC_LOG_ALWAYS(("nsXPConnect @ %x with mRefCnt = %d", this, mRefCnt)); + XPC_LOG_INDENT(); + XPC_LOG_ALWAYS(("mArbitraryScriptable @ %x", mArbitraryScriptable)); + XPC_LOG_ALWAYS(("mInterfaceInfoManager @ %x", mInterfaceInfoManager)); + XPC_LOG_ALWAYS(("mContextStack @ %x", mContextStack)); + XPC_LOG_ALWAYS(("mThrower @ %x", mThrower)); + if(mRuntime) + mRuntime->DebugDump(depth); + else + XPC_LOG_ALWAYS(("mRuntime is null")); + nsXPCWrappedNativeScope::DebugDumpAllScopes(depth); + XPC_LOG_OUTDENT(); +#endif + return NS_OK; +} + diff --git a/mozilla/js/src/xpconnect/src/xpccomponents.cpp b/mozilla/js/src/xpconnect/src/xpccomponents.cpp index f9f57432586..0f950dd96d8 100644 --- a/mozilla/js/src/xpconnect/src/xpccomponents.cpp +++ b/mozilla/js/src/xpconnect/src/xpccomponents.cpp @@ -87,7 +87,7 @@ XPC_IMPLEMENT_IGNORE_SETPROPERTY(nsXPCInterfaces) XPC_IMPLEMENT_IGNORE_GETATTRIBUTES(nsXPCInterfaces) XPC_IMPLEMENT_IGNORE_SETATTRIBUTES(nsXPCInterfaces) XPC_IMPLEMENT_IGNORE_DELETEPROPERTY(nsXPCInterfaces) -XPC_IMPLEMENT_FORWARD_DEFAULTVALUE(nsXPCInterfaces) +XPC_IMPLEMENT_FAIL_DEFAULTVALUE(nsXPCInterfaces, NS_ERROR_FAILURE) // XPC_IMPLEMENT_FORWARD_ENUMERATE(nsXPCInterfaces) XPC_IMPLEMENT_FORWARD_CHECKACCESS(nsXPCInterfaces) XPC_IMPLEMENT_IGNORE_CALL(nsXPCInterfaces) @@ -262,7 +262,7 @@ nsXPCInterfaces::CacheDynaProp(JSContext *cx, JSObject *obj, jsid id, nsXPConnect* xpc = nsXPConnect::GetXPConnect(); if(xpc) { - if(NS_SUCCEEDED(xpc->WrapNative(cx, + if(NS_SUCCEEDED(xpc->WrapNative(cx, obj, NS_STATIC_CAST(nsIJSID*,nsid), NS_GET_IID(nsIJSIID), &nsid_wrapper))) @@ -336,7 +336,7 @@ XPC_IMPLEMENT_IGNORE_SETPROPERTY(nsXPCClasses) XPC_IMPLEMENT_IGNORE_GETATTRIBUTES(nsXPCClasses) XPC_IMPLEMENT_IGNORE_SETATTRIBUTES(nsXPCClasses) XPC_IMPLEMENT_IGNORE_DELETEPROPERTY(nsXPCClasses) -XPC_IMPLEMENT_FORWARD_DEFAULTVALUE(nsXPCClasses) +XPC_IMPLEMENT_FAIL_DEFAULTVALUE(nsXPCClasses, NS_ERROR_FAILURE) // XPC_IMPLEMENT_FORWARD_ENUMERATE(nsXPCClasses) XPC_IMPLEMENT_FORWARD_CHECKACCESS(nsXPCClasses) XPC_IMPLEMENT_IGNORE_CALL(nsXPCClasses) @@ -499,7 +499,7 @@ nsXPCClasses::CacheDynaProp(JSContext *cx, JSObject *obj, jsid id, nsXPConnect* xpc = nsXPConnect::GetXPConnect(); if(xpc) { - if(NS_SUCCEEDED(xpc->WrapNative(cx, + if(NS_SUCCEEDED(xpc->WrapNative(cx, obj, NS_STATIC_CAST(nsIJSID*,nsid), nsIJSCID::GetIID(), &nsid_wrapper))) @@ -575,7 +575,7 @@ XPC_IMPLEMENT_IGNORE_SETPROPERTY(nsXPCClassesByID) XPC_IMPLEMENT_IGNORE_GETATTRIBUTES(nsXPCClassesByID) XPC_IMPLEMENT_IGNORE_SETATTRIBUTES(nsXPCClassesByID) XPC_IMPLEMENT_IGNORE_DELETEPROPERTY(nsXPCClassesByID) -XPC_IMPLEMENT_FORWARD_DEFAULTVALUE(nsXPCClassesByID) +XPC_IMPLEMENT_FAIL_DEFAULTVALUE(nsXPCClassesByID, NS_ERROR_FAILURE) // XPC_IMPLEMENT_FORWARD_ENUMERATE(nsXPCClassesByID) XPC_IMPLEMENT_FORWARD_CHECKACCESS(nsXPCClassesByID) XPC_IMPLEMENT_IGNORE_CALL(nsXPCClassesByID) @@ -775,7 +775,7 @@ nsXPCClassesByID::CacheDynaProp(JSContext *cx, JSObject *obj, jsid id, nsXPConnect* xpc = nsXPConnect::GetXPConnect(); if(xpc) { - if(NS_SUCCEEDED(xpc->WrapNative(cx, + if(NS_SUCCEEDED(xpc->WrapNative(cx, obj, NS_STATIC_CAST(nsIJSID*,nsid), nsIJSCID::GetIID(), &nsid_wrapper))) @@ -876,7 +876,7 @@ XPC_IMPLEMENT_IGNORE_SETPROPERTY(nsXPCResults) XPC_IMPLEMENT_IGNORE_GETATTRIBUTES(nsXPCResults) XPC_IMPLEMENT_IGNORE_SETATTRIBUTES(nsXPCResults) XPC_IMPLEMENT_IGNORE_DELETEPROPERTY(nsXPCResults) -XPC_IMPLEMENT_FORWARD_DEFAULTVALUE(nsXPCResults) +XPC_IMPLEMENT_FAIL_DEFAULTVALUE(nsXPCResults, NS_ERROR_FAILURE) // XPC_IMPLEMENT_FORWARD_ENUMERATE(nsXPCResults) XPC_IMPLEMENT_FORWARD_CHECKACCESS(nsXPCResults) XPC_IMPLEMENT_IGNORE_CALL(nsXPCResults) @@ -961,6 +961,7 @@ nsXPCComponents::~nsXPCComponents() NS_IF_RELEASE(mResults); } +/*******************************************/ #define XPC_IMPL_GET_OBJ_METHOD(_n) \ NS_IMETHODIMP nsXPCComponents::Get##_n(nsIXPC##_n * *a##_n) { \ NS_ENSURE_ARG_POINTER(a##_n); \ @@ -982,6 +983,7 @@ XPC_IMPL_GET_OBJ_METHOD(ClassesByID); XPC_IMPL_GET_OBJ_METHOD(Results); #undef XPC_IMPL_GET_OBJ_METHOD +/*******************************************/ NS_IMETHODIMP nsXPCComponents::GetStack(nsIJSStackFrameLocation * *aStack) @@ -1023,7 +1025,7 @@ XPC_IMPLEMENT_IGNORE_DEFINEPROPERTY(nsXPCComponents) XPC_IMPLEMENT_FORWARD_GETATTRIBUTES(nsXPCComponents) XPC_IMPLEMENT_IGNORE_SETATTRIBUTES(nsXPCComponents) XPC_IMPLEMENT_IGNORE_DELETEPROPERTY(nsXPCComponents) -XPC_IMPLEMENT_FORWARD_DEFAULTVALUE(nsXPCComponents) +XPC_IMPLEMENT_FAIL_DEFAULTVALUE(nsXPCComponents, NS_ERROR_FAILURE) XPC_IMPLEMENT_FORWARD_ENUMERATE(nsXPCComponents) XPC_IMPLEMENT_FORWARD_CHECKACCESS(nsXPCComponents) XPC_IMPLEMENT_IGNORE_CALL(nsXPCComponents) @@ -1113,12 +1115,13 @@ nsXPCComponents::GetProperty(JSContext *cx, JSObject *obj, { PRBool doResult = JS_FALSE; nsresult res; - if(xpcc->GetStringID(XPCContext::IDX_LAST_RESULT) == id) + XPCJSRuntime* rt = xpcc->GetRuntime(); + if(rt->GetStringID(XPCJSRuntime::IDX_LAST_RESULT) == id) { res = xpcc->GetLastResult(); doResult = JS_TRUE; } - else if(xpcc->GetStringID(XPCContext::IDX_RETURN_CODE) == id) + else if(rt->GetStringID(XPCJSRuntime::IDX_RETURN_CODE) == id) { res = xpcc->GetPendingResult(); doResult = JS_TRUE; @@ -1148,7 +1151,8 @@ nsXPCComponents::SetProperty(JSContext *cx, JSObject *obj, XPCContext* xpcc = nsXPConnect::GetContext(cx); if(xpcc) { - if(xpcc->GetStringID(XPCContext::IDX_RETURN_CODE) == id) + XPCJSRuntime* rt = xpcc->GetRuntime(); + if(rt->GetStringID(XPCJSRuntime::IDX_RETURN_CODE) == id) { nsresult rv; if(JS_ValueToECMAUint32(cx, *vp, (uint32*)&rv)) @@ -1168,3 +1172,56 @@ nsXPCComponents::SetProperty(JSContext *cx, JSObject *obj, return NS_OK; } +// static +JSBool +nsXPCComponents::AttachNewComponentsObject(XPCContext* xpcc, + JSObject* aGlobal) +{ + if(!xpcc || !aGlobal) + return JS_FALSE; + + JSBool success = JS_FALSE; + nsXPCComponents* components = nsnull; + nsXPCWrappedNativeScope* scope = nsnull; + nsXPCWrappedNative* wrapper = nsnull; + + components = new nsXPCComponents(); + if(components) + NS_ADDREF(components); + else + goto done; + + scope = new nsXPCWrappedNativeScope(xpcc); + if(scope) + NS_ADDREF(scope); + else + goto done; + + if(!scope->IsValid()) + goto done; + + // objects init'd OK. + + wrapper = nsXPCWrappedNative::GetNewOrUsedWrapper(xpcc, scope, aGlobal, + NS_STATIC_CAST(nsIXPCComponents*,components), + NS_GET_IID(nsIXPCComponents), nsnull); + if(wrapper) + { + JSObject* obj; + jsid id = xpcc->GetRuntime()->GetStringID(XPCJSRuntime::IDX_COMPONENTS); + success = NS_SUCCEEDED(wrapper->GetJSObject(&obj)) && + OBJ_DEFINE_PROPERTY(xpcc->GetJSContext(), + aGlobal, id, OBJECT_TO_JSVAL(obj), + nsnull, nsnull, + JSPROP_PERMANENT | + JSPROP_READONLY | + JSPROP_ENUMERATE, + nsnull); + } +done: + NS_IF_RELEASE(components); + NS_IF_RELEASE(scope); + NS_IF_RELEASE(wrapper); + return success; +} + diff --git a/mozilla/js/src/xpconnect/src/xpccontext.cpp b/mozilla/js/src/xpconnect/src/xpccontext.cpp index 145435854d0..47081a81255 100644 --- a/mozilla/js/src/xpconnect/src/xpccontext.cpp +++ b/mozilla/js/src/xpconnect/src/xpccontext.cpp @@ -36,15 +36,6 @@ #include "xpcprivate.h" -const char* XPCContext::mStrings[] = { - "constructor", // IDX_CONSTRUCTOR - "toString", // IDX_TO_STRING - "lastResult", // IDX_LAST_RESULT - "returnCode", // IDX_RETURN_CODE - XPC_VAL_STR, // IDX_VAL_STRING - XPC_QUERY_INTERFACE_STR // IDX_QUERY_INTERFACE_STRING -}; - /***************************************************************************/ AutoPushCallingLangType::AutoPushCallingLangType(JSContext* cx, @@ -75,232 +66,62 @@ AutoPushCallingLangType::~AutoPushCallingLangType() } } -/***************************************************************************/ - // static XPCContext* -XPCContext::newXPCContext(JSContext* aJSContext, - JSObject* aGlobalObj, - int WrappedJSMapSize, - int WrappedNativeMapSize, - int WrappedJSClassMapSize, - int WrappedNativeClassMapSize) +XPCContext::newXPCContext(XPCJSRuntime* aRuntime, + JSContext* aJSContext) { - XPCContext* xpcc; - + NS_PRECONDITION(aRuntime,"bad param"); NS_PRECONDITION(aJSContext,"bad param"); - NS_PRECONDITION(WrappedJSMapSize,"bad param"); - NS_PRECONDITION(WrappedNativeMapSize,"bad param"); - NS_PRECONDITION(WrappedJSClassMapSize,"bad param"); - NS_PRECONDITION(WrappedNativeClassMapSize,"bad param"); - xpcc = new XPCContext(aJSContext, - aGlobalObj, - WrappedJSMapSize, - WrappedNativeMapSize, - WrappedJSClassMapSize, - WrappedNativeClassMapSize); - - if(xpcc && - xpcc->GetXPConnect() && - xpcc->GetWrappedJSMap() && - xpcc->GetWrappedNativeMap() && - xpcc->GetWrappedJSClassMap() && - xpcc->GetWrappedNativeClassMap() && - xpcc->mStrIDs[0]) - { - return xpcc; - } - delete xpcc; - return nsnull; + return new XPCContext(aRuntime, aJSContext); } -XPCContext::XPCContext(JSContext* aJSContext, - JSObject* aGlobalObj, - int WrappedJSMapSize, - int WrappedNativeMapSize, - int WrappedJSClassMapSize, - int WrappedNativeClassMapSize) +XPCContext::XPCContext(XPCJSRuntime* aRuntime, + JSContext* aJSContext) + : mRuntime(aRuntime), + mJSContext(aJSContext), + mLastResult(NS_OK), + mPendingResult(NS_OK), + mSecurityManager(nsnull), + mSecurityManagerFlags(0), + mException(nsnull), + mCallingLangType(LANG_UNKNOWN) { - mXPConnect = nsXPConnect::GetXPConnect(); - mJSContext = aJSContext; - mGlobalObj = aGlobalObj; - mWrappedJSMap = JSObject2WrappedJSMap::newMap(WrappedJSMapSize); - mWrappedNativeMap = Native2WrappedNativeMap::newMap(WrappedNativeMapSize); - mWrappedJSClassMap = IID2WrappedJSClassMap::newMap(WrappedJSClassMapSize); - mWrappedNativeClassMap = IID2WrappedNativeClassMap::newMap(WrappedNativeClassMapSize); - for(uintN i = 0; i < IDX_TOTAL_COUNT; i++) - { - JS_ValueToId(aJSContext, - STRING_TO_JSVAL(JS_InternString(aJSContext, mStrings[i])), - &mStrIDs[i]); - if(!mStrIDs[i]) - { - mStrIDs[0] = 0; - break; - } - } - mLastResult = NS_OK; - mSecurityManager = nsnull; - mSecurityManagerFlags = 0; - mException = nsnull; - mCallingLangType = LANG_UNKNOWN; -} - -JS_STATIC_DLL_CALLBACK(intN) -WrappedJSDestroyCB(JSHashEntry *he, intN i, void *arg) -{ - ((nsXPCWrappedJS*)he->value)->XPCContextBeingDestroyed(); - return HT_ENUMERATE_NEXT; -} - -JS_STATIC_DLL_CALLBACK(intN) -WrappedNativeDestroyCB(JSHashEntry *he, intN i, void *arg) -{ - ((nsXPCWrappedNative*)he->value)->XPCContextBeingDestroyed(); - return HT_ENUMERATE_NEXT; -} - -JS_STATIC_DLL_CALLBACK(intN) -WrappedNativeClassDestroyCB(JSHashEntry *he, intN i, void *arg) -{ - ((nsXPCWrappedNativeClass*)he->value)->XPCContextBeingDestroyed(); - return HT_ENUMERATE_NEXT; -} - -JS_STATIC_DLL_CALLBACK(intN) -WrappedJSClassDestroyCB(JSHashEntry *he, intN i, void *arg) -{ - ((nsXPCWrappedJSClass*)he->value)->XPCContextBeingDestroyed(); - return HT_ENUMERATE_NEXT; + MOZ_COUNT_CTOR(XPCContext); + JS_AddArgumentFormatter(mJSContext, + XPC_ARG_FORMATTER_FORMAT_STR, + XPC_JSArgumentFormatter); } XPCContext::~XPCContext() { - // important to notify the objects before the classes - if(mWrappedJSMap) - { - mWrappedJSMap->Enumerate(WrappedJSDestroyCB, nsnull); - delete mWrappedJSMap; - } - if(mWrappedNativeMap) - { - mWrappedNativeMap->Enumerate(WrappedNativeDestroyCB, nsnull); - delete mWrappedNativeMap; - } - if(mWrappedNativeClassMap) - { - mWrappedNativeClassMap->Enumerate(WrappedNativeClassDestroyCB, nsnull); - delete mWrappedNativeClassMap; - } - if(mWrappedJSClassMap) - { - mWrappedJSClassMap->Enumerate(WrappedJSClassDestroyCB, nsnull); - delete mWrappedJSClassMap; - } - JS_RemoveArgumentFormatter(mJSContext, XPC_ARG_FORMATTER_FORMAT_STR); - + MOZ_COUNT_DTOR(XPCContext); NS_IF_RELEASE(mException); - NS_IF_RELEASE(mXPConnect); + NS_IF_RELEASE(mSecurityManager); + // we do not call JS_RemoveArgumentFormatter because we now only + // delete XPCContext *after* the underlying JSContext is dead } -JSBool -XPCContext::Init(JSObject* aGlobalObj /*= nsnull*/) -{ - if(aGlobalObj) - mGlobalObj = aGlobalObj; - return nsXPCWrappedJSClass::InitForContext(this) && - nsXPCWrappedNativeClass::InitForContext(this) && - JS_AddArgumentFormatter(mJSContext, XPC_ARG_FORMATTER_FORMAT_STR, - XPC_JSArgumentFormatter); -} - -#ifdef DEBUG -JS_STATIC_DLL_CALLBACK(intN) -WrappedNativeClassMapDumpEnumerator(JSHashEntry *he, intN i, void *arg) -{ - ((nsXPCWrappedNativeClass*)he->value)->DebugDump(*(int*)arg); - return HT_ENUMERATE_NEXT; -} -JS_STATIC_DLL_CALLBACK(intN) -WrappedJSClassMapDumpEnumerator(JSHashEntry *he, intN i, void *arg) -{ - ((nsXPCWrappedJSClass*)he->value)->DebugDump(*(int*)arg); - return HT_ENUMERATE_NEXT; -} -JS_STATIC_DLL_CALLBACK(intN) -WrappedNativeMapDumpEnumerator(JSHashEntry *he, intN i, void *arg) -{ - ((nsXPCWrappedNative*)he->value)->DebugDump(*(int*)arg); - return HT_ENUMERATE_NEXT; -} -JS_STATIC_DLL_CALLBACK(intN) -WrappedJSMapDumpEnumerator(JSHashEntry *he, intN i, void *arg) -{ - ((nsXPCWrappedJS*)he->value)->DebugDump(*(int*)arg); - return HT_ENUMERATE_NEXT; -} -#endif - - void -XPCContext::DebugDump(int depth) +XPCContext::DebugDump(PRInt16 depth) { #ifdef DEBUG depth--; XPC_LOG_ALWAYS(("XPCContext @ %x", this)); XPC_LOG_INDENT(); + XPC_LOG_ALWAYS(("mRuntime @ %x", mRuntime)); XPC_LOG_ALWAYS(("mJSContext @ %x", mJSContext)); - XPC_LOG_ALWAYS(("mGlobalObj @ %x", mGlobalObj)); - XPC_LOG_ALWAYS(("mWrappedNativeClassMap @ %x with %d classes", \ - mWrappedNativeClassMap, \ - mWrappedNativeClassMap ? mWrappedNativeClassMap->Count() : 0)); - XPC_LOG_ALWAYS(("mWrappedJSClassMap @ %x with %d classes", \ - mWrappedJSClassMap, \ - mWrappedJSClassMap ? mWrappedJSClassMap->Count() : 0)); - XPC_LOG_ALWAYS(("mWrappedNativeMap @ %x with %d wrappers", \ - mWrappedNativeMap, \ - mWrappedNativeMap ? mWrappedNativeMap->Count() : 0)); - XPC_LOG_ALWAYS(("mWrappedJSMap @ %x with %d wrappers", \ - mWrappedJSMap, \ - mWrappedJSMap ? mWrappedJSMap->Count() : 0)); + XPC_LOG_ALWAYS(("mLastResult of %x", mLastResult)); + XPC_LOG_ALWAYS(("mPendingResult of %x", mPendingResult)); + XPC_LOG_ALWAYS(("mSecurityManager @ %x", mSecurityManager)); + XPC_LOG_ALWAYS(("mSecurityManagerFlags of %x", mSecurityManagerFlags)); - if(depth && mWrappedNativeClassMap && mWrappedNativeClassMap->Count()) + XPC_LOG_ALWAYS(("mException @ %x", mException)); + if(depth && mException) { - XPC_LOG_ALWAYS(("The %d WrappedNativeClasses...",\ - mWrappedNativeClassMap->Count())); - XPC_LOG_INDENT(); - mWrappedNativeClassMap->Enumerate(WrappedNativeClassMapDumpEnumerator, &depth); - XPC_LOG_OUTDENT(); + // XXX show the exception here... } - - if(depth && mWrappedJSClassMap && mWrappedJSClassMap->Count()) - { - XPC_LOG_ALWAYS(("The %d WrappedJSClasses...",\ - mWrappedJSClassMap->Count())); - XPC_LOG_INDENT(); - mWrappedJSClassMap->Enumerate(WrappedJSClassMapDumpEnumerator, &depth); - XPC_LOG_OUTDENT(); - } - - if(depth && mWrappedNativeMap && mWrappedNativeMap->Count()) - { - XPC_LOG_ALWAYS(("The %d WrappedNatives...",\ - mWrappedNativeMap->Count())); - XPC_LOG_INDENT(); - mWrappedNativeMap->Enumerate(WrappedNativeMapDumpEnumerator, &depth); - XPC_LOG_OUTDENT(); - } - - if(depth && mWrappedJSMap && mWrappedJSMap->Count()) - { - XPC_LOG_ALWAYS(("The %d WrappedJSs...",\ - mWrappedJSMap->Count())); - XPC_LOG_INDENT(); - mWrappedJSMap->Enumerate(WrappedJSMapDumpEnumerator, &depth); - XPC_LOG_OUTDENT(); - } - XPC_LOG_OUTDENT(); #endif } diff --git a/mozilla/js/src/xpconnect/src/xpcconvert.cpp b/mozilla/js/src/xpconnect/src/xpcconvert.cpp index bbddb555174..b5ca73136aa 100644 --- a/mozilla/js/src/xpconnect/src/xpcconvert.cpp +++ b/mozilla/js/src/xpconnect/src/xpcconvert.cpp @@ -187,7 +187,7 @@ JAM_DOUBLE(JSContext *cx, double v, jsdouble *dbl) JSBool XPCConvert::NativeData2JS(JSContext* cx, jsval* d, const void* s, const nsXPTType& type, const nsID* iid, - nsresult* pErr) + JSObject* jsscope, nsresult* pErr) { NS_PRECONDITION(s, "bad param"); NS_PRECONDITION(d, "bad param"); @@ -255,7 +255,7 @@ XPCConvert::NativeData2JS(JSContext* cx, jsval* d, const void* s, if(!iid) break; JSObject* obj; - if(!(obj = xpc_NewIDObject(cx, *iid))) + if(!(obj = xpc_NewIDObject(cx, jsscope, *iid))) return JS_FALSE; *d = OBJECT_TO_JSVAL(obj); break; @@ -354,11 +354,15 @@ XPCConvert::NativeData2JS(JSContext* cx, jsval* d, const void* s, { // we need to build a wrapper nsXPCWrappedNative* wrapper = nsnull; + nsXPCWrappedNativeScope* scope; XPCContext* xpcc; if(!iid || !(xpcc = nsXPConnect::GetContext(cx)) || + !(scope = + nsXPCWrappedNativeScope::FindInJSObjectScope(xpcc, jsscope)) || !(wrapper = nsXPCWrappedNative::GetNewOrUsedWrapper(xpcc, + scope, jsscope, iface, *iid, pErr))) { return JS_FALSE; @@ -969,7 +973,8 @@ XPC_JSArgumentFormatter(JSContext *cx, const char *format, iid = va_arg(ap, const nsIID*); iface = va_arg(ap, nsISupports *); - if(!XPCConvert::NativeData2JS(cx, &vp[0], &iface, type, iid, nsnull)) + if(!XPCConvert::NativeData2JS(cx, &vp[0], &iface, type, iid, + JS_GetGlobalObject(cx), nsnull)) return JS_FALSE; } *vpp = vp + 1; @@ -990,7 +995,7 @@ JSBool XPCConvert::NativeArray2JS(JSContext* cx, jsval* d, const void** s, const nsXPTType& type, const nsID* iid, - JSUint32 count, + JSUint32 count, JSObject* scope, nsresult* pErr) { NS_PRECONDITION(s, "bad param"); @@ -1018,7 +1023,8 @@ XPCConvert::NativeArray2JS(JSContext* cx, PR_BEGIN_MACRO \ for(i = 0; i < count; i++) \ { \ - if(!NativeData2JS(cx, ¤t, ((_t*)*s)+i, type, iid, pErr) || \ + if(!NativeData2JS(cx, ¤t, ((_t*)*s)+i, type, iid, \ + scope, pErr) || \ !JS_SetElement(cx, array, i, ¤t)) \ goto failure; \ } \ diff --git a/mozilla/js/src/xpconnect/src/xpcforwards.h b/mozilla/js/src/xpconnect/src/xpcforwards.h index e263b3da2a6..c2fc54eeea6 100644 --- a/mozilla/js/src/xpconnect/src/xpcforwards.h +++ b/mozilla/js/src/xpconnect/src/xpcforwards.h @@ -39,8 +39,9 @@ // forward declarations of interally used classes... -class XPCContext; class nsXPConnect; +class XPCJSRuntime; +class XPCContext; class JSObject2WrappedJSMap; class Native2WrappedNativeMap; class IID2WrappedJSClassMap; @@ -51,8 +52,16 @@ class nsXPCWrappedJS; class nsXPCWrappedNative; class nsXPCWrappedJSClass; class nsXPCWrappedNativeClass; +class nsXPCWrappedNativeScope; class nsXPCWrappedJSMethods; class XPCJSThrower; +class XPCJSStack; class XPCNativeMemberDescriptor; +class nsXPCInterfaces; +class nsXPCClasses; +class nsXPCClassesByID; +class nsXPCResults; + + #endif /* xpcforwards_h___ */ diff --git a/mozilla/js/src/xpconnect/src/xpcjsid.cpp b/mozilla/js/src/xpconnect/src/xpcjsid.cpp index d4985c4d85a..f79811e33e9 100644 --- a/mozilla/js/src/xpconnect/src/xpcjsid.cpp +++ b/mozilla/js/src/xpconnect/src/xpcjsid.cpp @@ -686,7 +686,7 @@ CIDCreateInstance::Call(JSContext *cx, JSObject *obj, nsIXPConnect* xpc = nsXPConnect::GetXPConnect(); if(xpc) { - rv = xpc->WrapNative(cx, inst, iid, &instWrapper); + rv = xpc->WrapNative(cx, obj, inst, iid, &instWrapper); NS_RELEASE(xpc); } @@ -856,7 +856,7 @@ CIDGetService::Call(JSContext *cx, JSObject *obj, } nsCOMPtr srvcWrapper; - rv = xpc->WrapNative(cx, srvc, iid, getter_AddRefs(srvcWrapper)); + rv = xpc->WrapNative(cx, obj, srvc, iid, getter_AddRefs(srvcWrapper)); if(NS_FAILED(rv)) { ThrowException(NS_ERROR_XPC_CANT_CREATE_WN, cx); @@ -1014,7 +1014,7 @@ nsJSCID::Construct(JSContext *cx, JSObject *obj, // additional utilities... JSObject * -xpc_NewIDObject(JSContext *cx, const nsID& aID) +xpc_NewIDObject(JSContext *cx, JSObject* jsobj, const nsID& aID) { JSObject *obj = nsnull; @@ -1029,7 +1029,7 @@ xpc_NewIDObject(JSContext *cx, const nsID& aID) if(xpc) { nsIXPConnectWrappedNative* nsid_wrapper; - if(NS_SUCCEEDED(xpc->WrapNative(cx, + if(NS_SUCCEEDED(xpc->WrapNative(cx, jsobj, NS_STATIC_CAST(nsISupports*,iid), NS_GET_IID(nsIJSID), &nsid_wrapper))) diff --git a/mozilla/js/src/xpconnect/src/xpcjsruntime.cpp b/mozilla/js/src/xpconnect/src/xpcjsruntime.cpp new file mode 100644 index 00000000000..9546605a2b1 --- /dev/null +++ b/mozilla/js/src/xpconnect/src/xpcjsruntime.cpp @@ -0,0 +1,273 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape 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/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released + * March 31, 1998. + * + * The Initial Developer of the Original Code is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the + * terms of the GNU Public License (the "GPL"), in which case the + * provisions of the GPL are applicable instead of those above. + * If you wish to allow use of your version of this file only + * under the terms of the GPL and not to allow others to use your + * version of this file under the NPL, indicate your decision by + * deleting the provisions above and replace them with the notice + * and other provisions required by the GPL. If you do not delete + * the provisions above, a recipient may use your version of this + * file under either the NPL or the GPL. + */ + +/* Per JSRuntime object */ + +#include "xpcprivate.h" + +/***************************************************************************/ + +const char* XPCJSRuntime::mStrings[] = { + "constructor", // IDX_CONSTRUCTOR + "toString", // IDX_TO_STRING + "lastResult", // IDX_LAST_RESULT + "returnCode", // IDX_RETURN_CODE + "value", // IDX_VALUE + "QueryInterface", // IDX_QUERY_INTERFACE + "Components", // IDX_COMPONENTS +}; + +/***************************************************************************/ + +XPCJSRuntime::~XPCJSRuntime() +{ + // XXX cleanup maps here! + + if(mMapLock) + PR_DestroyLock(mMapLock); +} + +XPCJSRuntime::XPCJSRuntime(nsXPConnect* aXPConnect, + JSRuntime* aJSRuntime) + : mXPConnect(aXPConnect), + mJSRuntime(aJSRuntime), + mContextMap(JSContext2XPCContextMap::newMap(XPC_CONTEXT_MAP_SIZE)), + mWrappedJSMap(JSObject2WrappedJSMap::newMap(XPC_JS_MAP_SIZE)), + mWrappedJSClassMap(IID2WrappedJSClassMap::newMap(XPC_JS_CLASS_MAP_SIZE)), + mWrappedNativeClassMap(IID2WrappedNativeClassMap::newMap(XPC_NATIVE_CLASS_MAP_SIZE)), + mMapLock(PR_NewLock()) +{ + // these jsids filled in later when we have a JSContext to work with. + mStrIDs[0] = 0; +} + +// static +XPCJSRuntime* +XPCJSRuntime::newXPCJSRuntime(nsXPConnect* aXPConnect, + JSRuntime* aJSRuntime) +{ + NS_PRECONDITION(aXPConnect,"bad param"); + NS_PRECONDITION(aJSRuntime,"bad param"); + + XPCJSRuntime* self; + + self = new XPCJSRuntime(aXPConnect, + aJSRuntime); + + if(self && + self->GetContextMap() && + self->GetWrappedJSMap() && + self->GetWrappedJSClassMap() && + self->GetWrappedNativeClassMap() && + self->GetMapLock()) + { + return self; + } + delete self; + return nsnull; +} + +XPCContext* +XPCJSRuntime::GetXPCContext(JSContext* cx) +{ + XPCContext* xpcc; + + // find it in the map. + + PR_Lock(mMapLock); + xpcc = mContextMap->Find(cx); + PR_Unlock(mMapLock); + + // else resync with the JSRuntime's JSContext list and see if it is found + if(!xpcc) + xpcc = SyncXPCContextList(cx); + return xpcc; +} + + +JS_STATIC_DLL_CALLBACK(intN) +KillDeadContextsCB(JSHashEntry *he, intN i, void *arg) +{ + JSRuntime* rt = (JSRuntime*) arg; + XPCContext* xpcc = (XPCContext*) he->value; + JSContext* cx = xpcc->GetJSContext(); + JSContext* iter = nsnull; + JSContext* cur; + + // if this XPCContext represents a live JSContext then fine. + while(nsnull != (cur = JS_ContextIterator(rt, &iter))) + { + if(cur == cx) + return HT_ENUMERATE_NEXT; + } + + // this XPCContext represents a dead JSContext - delete it + delete xpcc; + return HT_ENUMERATE_REMOVE; +} + +XPCContext* +XPCJSRuntime::SyncXPCContextList(JSContext* cx /* = nsnull */) +{ + // hold the map lock through this whole thing + nsAutoLock lock(mMapLock); + + // get rid of any XPCContexts that represent dead JSContexts + mContextMap->Enumerate(KillDeadContextsCB, mJSRuntime); + + XPCContext* found = nsnull; + + // add XPCContexts that represent any JSContexts we have not seen before + JSContext *cur, *iter = nsnull; + while(nsnull != (cur = JS_ContextIterator(mJSRuntime, &iter))) + { + XPCContext* xpcc = mContextMap->Find(cur); + if(!xpcc) + { + xpcc = XPCContext::newXPCContext(this, cur); + if(xpcc) + mContextMap->Add(xpcc); + } + + // if it is our first context then we need to generate our string ids + if(!mStrIDs[0]) + GenerateStringIDs(cur); + + if(cx && cx == cur) + found = xpcc; + } + return found; +} + +JSBool +XPCJSRuntime::GenerateStringIDs(JSContext* cx) +{ + NS_PRECONDITION(!mStrIDs[0],"string ids generated twice!"); + for(uintN i = 0; i < IDX_TOTAL_COUNT; i++) + { + JS_ValueToId(cx, + STRING_TO_JSVAL(JS_InternString(cx, mStrings[i])), + &mStrIDs[i]); + if(!mStrIDs[i]) + { + mStrIDs[0] = 0; + return JS_FALSE; + } + } + return JS_TRUE; +} + +#ifdef DEBUG +JS_STATIC_DLL_CALLBACK(intN) +ContextMapDumpEnumerator(JSHashEntry *he, intN i, void *arg) +{ + ((XPCContext*)he->value)->DebugDump(*(PRInt16*)arg); + return HT_ENUMERATE_NEXT; +} +JS_STATIC_DLL_CALLBACK(intN) +WrappedJSClassMapDumpEnumerator(JSHashEntry *he, intN i, void *arg) +{ + ((nsXPCWrappedJSClass*)he->value)->DebugDump(*(PRInt16*)arg); + return HT_ENUMERATE_NEXT; +} +JS_STATIC_DLL_CALLBACK(intN) +WrappedJSMapDumpEnumerator(JSHashEntry *he, intN i, void *arg) +{ + ((nsXPCWrappedJS*)he->value)->DebugDump(*(PRInt16*)arg); + return HT_ENUMERATE_NEXT; +} +JS_STATIC_DLL_CALLBACK(intN) +WrappedNativeClassMapDumpEnumerator(JSHashEntry *he, intN i, void *arg) +{ + ((nsXPCWrappedNativeClass*)he->value)->DebugDump(*(PRInt16*)arg); + return HT_ENUMERATE_NEXT; +} +#endif + +void +XPCJSRuntime::DebugDump(PRInt16 depth) +{ +#ifdef DEBUG + depth--; + XPC_LOG_ALWAYS(("XPCJSRuntime @ %x", this)); + XPC_LOG_INDENT(); + XPC_LOG_ALWAYS(("mXPConnect @ %x", mXPConnect)); + XPC_LOG_ALWAYS(("mJSRuntime @ %x", mJSRuntime)); + XPC_LOG_ALWAYS(("mMapLock @ %x", mMapLock)); + + XPC_LOG_ALWAYS(("mContextMap @ %x with %d context(s)", \ + mContextMap, mContextMap ? mContextMap->Count() : 0)); + // iterate contexts... + if(depth && mContextMap && mContextMap->Count()) + { + XPC_LOG_INDENT(); + mContextMap->Enumerate(ContextMapDumpEnumerator, &depth); + XPC_LOG_OUTDENT(); + } + + XPC_LOG_ALWAYS(("mWrappedJSClassMap @ %x with %d wrapperclasses(s)", \ + mWrappedJSClassMap, mWrappedJSClassMap ? \ + mWrappedJSClassMap->Count() : 0)); + // iterate wrappersclasses... + if(depth && mWrappedJSClassMap && mWrappedJSClassMap->Count()) + { + XPC_LOG_INDENT(); + mWrappedJSClassMap->Enumerate(WrappedJSClassMapDumpEnumerator, &depth); + XPC_LOG_OUTDENT(); + } + XPC_LOG_ALWAYS(("mWrappedJSMap @ %x with %d wrappers(s)", \ + mWrappedJSMap, mWrappedJSMap ? \ + mWrappedJSMap->Count() : 0)); + // iterate wrappers... + if(depth && mWrappedJSMap && mWrappedJSMap->Count()) + { + XPC_LOG_INDENT(); + mWrappedJSMap->Enumerate(WrappedJSMapDumpEnumerator, &depth); + XPC_LOG_OUTDENT(); + } + + XPC_LOG_ALWAYS(("mWrappedNativeClassMap @ %x with %d wrapperclasses(s)", \ + mWrappedNativeClassMap, mWrappedNativeClassMap ? \ + mWrappedNativeClassMap->Count() : 0)); + // iterate wrappersclasses... + if(depth && mWrappedNativeClassMap && mWrappedNativeClassMap->Count()) + { + XPC_LOG_INDENT(); + mWrappedNativeClassMap->Enumerate(WrappedNativeClassMapDumpEnumerator, &depth); + XPC_LOG_OUTDENT(); + } + XPC_LOG_OUTDENT(); +#endif +} + diff --git a/mozilla/js/src/xpconnect/src/xpclog.cpp b/mozilla/js/src/xpconnect/src/xpclog.cpp index d87fb27594a..88d81250a1a 100644 --- a/mozilla/js/src/xpconnect/src/xpclog.cpp +++ b/mozilla/js/src/xpconnect/src/xpclog.cpp @@ -67,7 +67,7 @@ static PRBool Init() return PR_TRUE; } -XPC_PUBLIC_API(void) +void XPC_Log_print(const char *fmt, ...) { va_list ap; @@ -82,27 +82,27 @@ XPC_Log_print(const char *fmt, ...) PR_LogPrint("%s",line); } -XPC_PUBLIC_API(PRBool) +PRBool XPC_Log_Check(int i) { return CAN_RUN && PR_LOG_TEST(g_LogMod,1); } -XPC_PUBLIC_API(void) +void XPC_Log_Indent() { if(INDENT_FACTOR*(++g_Indent) > SPACE_COUNT) g_Indent-- ; } -XPC_PUBLIC_API(void) +void XPC_Log_Outdent() { if(--g_Indent < 0) g_Indent++; } -XPC_PUBLIC_API(void) +void XPC_Log_Clear_Indent() { g_Indent = 0; diff --git a/mozilla/js/src/xpconnect/public/xpclog.h b/mozilla/js/src/xpconnect/src/xpclog.h similarity index 92% rename from mozilla/js/src/xpconnect/public/xpclog.h rename to mozilla/js/src/xpconnect/src/xpclog.h index d4a72be4680..457120a5a13 100644 --- a/mozilla/js/src/xpconnect/public/xpclog.h +++ b/mozilla/js/src/xpconnect/src/xpclog.h @@ -69,11 +69,11 @@ JS_BEGIN_EXTERN_C -XPC_PUBLIC_API(void) XPC_Log_print(const char *fmt, ...); -XPC_PUBLIC_API(PRBool) XPC_Log_Check(int i); -XPC_PUBLIC_API(void) XPC_Log_Indent(); -XPC_PUBLIC_API(void) XPC_Log_Outdent(); -XPC_PUBLIC_API(void) XPC_Log_Clear_Indent(); +void XPC_Log_print(const char *fmt, ...); +PRBool XPC_Log_Check(int i); +void XPC_Log_Indent(); +void XPC_Log_Outdent(); +void XPC_Log_Clear_Indent(); JS_END_EXTERN_C diff --git a/mozilla/js/src/xpconnect/src/xpcmodule.cpp b/mozilla/js/src/xpconnect/src/xpcmodule.cpp index 015f297cfc6..776ac1b1b1b 100644 --- a/mozilla/js/src/xpconnect/src/xpcmodule.cpp +++ b/mozilla/js/src/xpconnect/src/xpcmodule.cpp @@ -205,7 +205,7 @@ nsXPConnectModule::Shutdown() // Release our singletons nsXPCThreadJSContextStackImpl::FreeSingleton(); nsJSRuntimeServiceImpl::FreeSingleton(); - nsXPConnect::FreeXPConnect(); + nsXPConnect::ReleaseXPConnectSingleton(); } // Create a factory object for creating instances of aClass. diff --git a/mozilla/js/src/xpconnect/src/xpcnativecallcontext.cpp b/mozilla/js/src/xpconnect/src/xpcnativecallcontext.cpp index 1862b915fc5..73b37b33095 100644 --- a/mozilla/js/src/xpconnect/src/xpcnativecallcontext.cpp +++ b/mozilla/js/src/xpconnect/src/xpcnativecallcontext.cpp @@ -36,7 +36,6 @@ #include "xpcprivate.h" - nsXPCNativeCallContext::nsXPCNativeCallContext() : mData(nsnull) { @@ -117,7 +116,7 @@ nsXPCNativeCallContext::GetArgc(PRUint32* argcp) } NS_IMETHODIMP -nsXPCNativeCallContext::GetArgv(jsval** argvp) +nsXPCNativeCallContext::GetArgvPtr(jsval** argvp) { NS_ENSURE_ARG_POINTER(argvp); if(NS_WARN_IF_FALSE(mData,"no active native call")) @@ -145,3 +144,14 @@ nsXPCNativeCallContext::SetExceptionWasThrown(JSBool threw) return NS_OK; } +NS_IMETHODIMP +nsXPCNativeCallContext::GetExceptionWasThrown(JSBool* threwp) +{ + NS_ENSURE_ARG_POINTER(threwp); + if(NS_WARN_IF_FALSE(mData,"no active native call")) + return NS_ERROR_FAILURE; + *threwp = mData->threw; + return NS_OK; +} + + diff --git a/mozilla/js/src/xpconnect/src/xpcprivate.h b/mozilla/js/src/xpconnect/src/xpcprivate.h index cdfffcd2bf8..4c6ebf88a47 100644 --- a/mozilla/js/src/xpconnect/src/xpcprivate.h +++ b/mozilla/js/src/xpconnect/src/xpcprivate.h @@ -55,6 +55,7 @@ #include "nsIJSRuntimeService.h" #include "nsCOMPtr.h" #include "nsIModule.h" +#include "nsAutoLock.h" #include "xptcall.h" #include "jsapi.h" #include "jshash.h" @@ -83,10 +84,18 @@ #define XPC_DETECT_LEADING_UPPERCASE_ACCESS_ERRORS 1 #endif -extern const char XPC_VAL_STR[]; // 'value' property name for out params -extern const char XPC_COMPONENTS_STR[]; // 'Components' property name +/***************************************************************************/ +// default initial sizes for maps (hashtables) + +#define XPC_CONTEXT_MAP_SIZE 16 +#define XPC_JS_MAP_SIZE 256 +#define XPC_NATIVE_MAP_SIZE 256 +#define XPC_JS_CLASS_MAP_SIZE 256 +#define XPC_NATIVE_CLASS_MAP_SIZE 256 + +/***************************************************************************/ +// data declarations... extern const char XPC_ARG_FORMATTER_FORMAT_STR[]; // format string -extern const char XPC_QUERY_INTERFACE_STR[]; // 'QueryInterface' method name /***************************************************************************/ // useful macros... @@ -106,91 +115,36 @@ extern const char XPC_QUERY_INTERFACE_STR[]; // 'QueryInterface' method name class nsXPConnect : public nsIXPConnect { +public: // all the interface method declarations... NS_DECL_ISUPPORTS - - NS_IMETHOD InitJSContext(JSContext* aJSContext, - JSObject* aGlobalJSObj, - JSBool AddComponentsObject); - - NS_IMETHOD InitJSContextWithNewWrappedGlobal(JSContext* aJSContext, - nsISupports* aCOMObj, - REFNSIID aIID, - JSBool AddComponentsObject, - nsIXPConnectWrappedNative** aWrapper); - - NS_IMETHOD AddNewComponentsObject(JSContext* aJSContext, - JSObject* aGlobalJSObj); - - NS_IMETHOD CreateComponentsObject(nsIXPCComponents** aComponentsObj); - - NS_IMETHOD WrapNative(JSContext* aJSContext, - nsISupports* aCOMObj, - REFNSIID aIID, - nsIXPConnectWrappedNative** aWrapper); - - NS_IMETHOD WrapJS(JSContext* aJSContext, - JSObject* aJSObj, - REFNSIID aIID, - nsISupports** aWrapper); - - NS_IMETHOD GetWrappedNativeOfJSObject(JSContext* aJSContext, - JSObject* aJSObj, - nsIXPConnectWrappedNative** aWrapper); - - NS_IMETHOD DebugDump(int depth); - NS_IMETHOD DebugDumpObject(nsISupports* p, int depth); - NS_IMETHOD DebugDumpJSStack(); - - NS_IMETHOD AbandonJSContext(JSContext* aJSContext); - - NS_IMETHOD SetSecurityManagerForJSContext(JSContext* aJSContext, - nsIXPCSecurityManager* aManager, - PRUint16 flags); - - NS_IMETHOD GetSecurityManagerForJSContext(JSContext* aJSContext, - nsIXPCSecurityManager** aManager, - PRUint16* flags); - - NS_IMETHOD GetCurrentJSStack(nsIJSStackFrameLocation** aStack); - - NS_IMETHOD CreateStackFrameLocation(JSBool isJSFrame, - const char* aFilename, - const char* aFunctionName, - PRInt32 aLineNumber, - nsIJSStackFrameLocation* aCaller, - nsIJSStackFrameLocation** aStack); - - NS_IMETHOD GetPendingException(nsIXPCException** aException); - /* pass nsnull to clear pending exception */ - NS_IMETHOD SetPendingException(nsIXPCException* aException); - - NS_IMETHOD GetCurrentNativeCallContext(nsIXPCNativeCallContext** aCC); + NS_DECL_NSIXPCONNECT // non-interface implementation public: static nsXPConnect* GetXPConnect(); - static void FreeXPConnect(); + static void ReleaseXPConnectSingleton(); static nsIInterfaceInfoManager* GetInterfaceInfoManager(nsXPConnect* xpc = nsnull); - static XPCContext* GetContext(JSContext* cx, nsXPConnect* xpc = nsnull); - static XPCJSThrower* GetJSThrower(nsXPConnect* xpc = nsnull); - static JSBool IsISupportsDescendant(nsIInterfaceInfo* info); static nsIJSContextStack* GetContextStack(nsXPConnect* xpc = nsnull); + static XPCJSThrower* GetJSThrower(nsXPConnect* xpc = nsnull); + static XPCJSRuntime* GetRuntime(nsXPConnect* xpc = nsnull); + static XPCContext* GetContext(JSContext* cx, nsXPConnect* xpc = nsnull); - JSContext2XPCContextMap* GetContextMap() {return mContextMap;} + static JSBool IsISupportsDescendant(nsIInterfaceInfo* info); nsIXPCScriptable* GetArbitraryScriptable() {return mArbitraryScriptable;} virtual ~nsXPConnect(); private: nsXPConnect(); - XPCContext* NewContext(JSContext* cx, JSObject* global, - JSBool doInit = JS_TRUE); + + JSBool EnsureRuntime() {return mRuntime ? JS_TRUE : CreateRuntime();} + JSBool CreateRuntime(); private: // Singleton instance static nsXPConnect* gSelf; - JSContext2XPCContextMap* mContextMap; + XPCJSRuntime* mRuntime; nsIXPCScriptable* mArbitraryScriptable; nsIInterfaceInfoManager* mInterfaceInfoManager; XPCJSThrower* mThrower; @@ -199,26 +153,99 @@ private: /***************************************************************************/ +// no virtuals. no refcounting +class XPCJSRuntime +{ +public: + static XPCJSRuntime* newXPCJSRuntime(nsXPConnect* aXPConnect, + JSRuntime* aJSRuntime); + + JSRuntime* GetJSRuntime() const {return mJSRuntime;} + nsXPConnect* GetXPConnect() const {return mXPConnect;} + + JSObject2WrappedJSMap* GetWrappedJSMap() const + {return mWrappedJSMap;} + IID2WrappedJSClassMap* GetWrappedJSClassMap() const + {return mWrappedJSClassMap;} + IID2WrappedNativeClassMap* GetWrappedNativeClassMap() const + {return mWrappedNativeClassMap;} + + PRLock* GetMapLock() const {return mMapLock;} + + XPCContext* GetXPCContext(JSContext* cx); + XPCContext* SyncXPCContextList(JSContext* cx = nsnull); + + // To add a new string: add to this list and to XPCJSRuntime::mStrings + // at the top of xpcjsruntime.cpp + enum { + IDX_CONSTRUCTOR = 0 , + IDX_TO_STRING , + IDX_LAST_RESULT , + IDX_RETURN_CODE , + IDX_VALUE , + IDX_QUERY_INTERFACE , + IDX_COMPONENTS , + IDX_TOTAL_COUNT // just a count of the above + }; + + jsid GetStringID(uintN index) const + { + NS_ASSERTION(index < IDX_TOTAL_COUNT, "index out of range"); + return mStrIDs[index]; + } + const char* GetStringName(uintN index) const + { + NS_ASSERTION(index < IDX_TOTAL_COUNT, "index out of range"); + return mStrings[index]; + } + + void DebugDump(PRInt16 depth); + + ~XPCJSRuntime(); + +private: + XPCJSRuntime(); // no implementation + XPCJSRuntime(nsXPConnect* aXPConnect, + JSRuntime* aJSRuntime); + + JSContext2XPCContextMap* GetContextMap() const {return mContextMap;} + JSBool GenerateStringIDs(JSContext* cx); + +private: + static const char* mStrings[IDX_TOTAL_COUNT]; + jsid mStrIDs[IDX_TOTAL_COUNT]; + + nsXPConnect* mXPConnect; + JSRuntime* mJSRuntime; + JSContext2XPCContextMap* mContextMap; + JSObject2WrappedJSMap* mWrappedJSMap; + IID2WrappedJSClassMap* mWrappedJSClassMap; + IID2WrappedNativeClassMap* mWrappedNativeClassMap; + PRLock* mMapLock; +}; + +/***************************************************************************/ + struct NativeCallContextData { // no ctor or dtor so we have random state at creation. - void init(nsISupports* Acallee, - uint16 Aindex, - nsIXPConnectWrappedNative* Awrapper, - JSContext* Acx, - PRUint32 Aargc, - jsval* Aargv, - jsval* Aretvalp) + void init(nsISupports* callee, + uint16 index, + nsIXPConnectWrappedNative* wrapper, + JSContext* cx, + PRUint32 argc, + jsval* argv, + jsval* retvalp) { - callee = Acallee; - index = Aindex; - wrapper = Awrapper; - cx = Acx; - argc = Aargc; - argv = Aargv; - retvalp = Aretvalp; - threw = JS_FALSE; + this->callee = callee; + this->index = index; + this->wrapper = wrapper; + this->cx = cx; + this->argc = argc; + this->argv = argv; + this->retvalp = retvalp; + this->threw = JS_FALSE; } nsISupports* callee; @@ -235,16 +262,12 @@ struct NativeCallContextData class nsXPCNativeCallContext : public nsIXPCNativeCallContext { public: + // all the interface method declarations... NS_DECL_ISUPPORTS - - NS_IMETHOD GetCallee(nsISupports** calleep); - NS_IMETHOD GetCalleeMethodIndex(uint16* indexp); - NS_IMETHOD GetCalleeWrapper(nsIXPConnectWrappedNative** wrapperp); - NS_IMETHOD GetJSContext(JSContext** cxp); - NS_IMETHOD GetArgc(PRUint32* argcp); - NS_IMETHOD GetArgv(jsval** argvp); - NS_IMETHOD GetRetValPtr(jsval** retvalp); - NS_IMETHOD SetExceptionWasThrown(JSBool threw); + NS_DECL_NSIXPCNATIVECALLCONTEXT + +public: + // non-interface implementation nsXPCNativeCallContext(); virtual ~nsXPCNativeCallContext(); @@ -263,48 +286,11 @@ private: class XPCContext { public: - static XPCContext* newXPCContext(JSContext* aJSContext, - JSObject* aGlobalObj, - int WrappedJSMapSize, - int WrappedNativeMapSize, - int WrappedJSClassMapSize, - int WrappedNativeClassMapSize); + static XPCContext* newXPCContext(XPCJSRuntime* aRuntime, + JSContext* aJSContext); - JSContext* GetJSContext() const {return mJSContext;} - JSObject* GetGlobalObject() const {return mGlobalObj;} - nsXPConnect* GetXPConnect() const {return mXPConnect;} - - JSObject2WrappedJSMap* GetWrappedJSMap() const - {return mWrappedJSMap;} - Native2WrappedNativeMap* GetWrappedNativeMap() const - {return mWrappedNativeMap;} - IID2WrappedJSClassMap* GetWrappedJSClassMap() const - {return mWrappedJSClassMap;} - IID2WrappedNativeClassMap* GetWrappedNativeClassMap() const - {return mWrappedNativeClassMap;} - - // To add a new string: add to this list and to XPCContext::mStrings - // at the top of xpccontext.cpp - enum { - IDX_CONSTRUCTOR = 0 , - IDX_TO_STRING , - IDX_LAST_RESULT , - IDX_RETURN_CODE , - IDX_VAL_STRING , - IDX_QUERY_INTERFACE_STRING , - IDX_TOTAL_COUNT // just a count of the above - }; - - jsid GetStringID(uintN index) const - { - NS_ASSERTION(index < IDX_TOTAL_COUNT, "index out of range"); - return mStrIDs[index]; - } - const char* GetStringName(uintN index) const - { - NS_ASSERTION(index < IDX_TOTAL_COUNT, "index out of range"); - return mStrings[index]; - } + XPCJSRuntime* GetRuntime() const {return mRuntime;} + JSContext* GetJSContext() const {return mJSContext;} enum LangType {LANG_UNKNOWN, LANG_JS, LANG_NATIVE}; @@ -347,28 +333,17 @@ public: nsXPCNativeCallContext* GetNativeCallContext() {return &mNativeCallContext;} - JSBool Init(JSObject* aGlobalObj = nsnull); - void DebugDump(int depth); + void DebugDump(PRInt16 depth); ~XPCContext(); + private: XPCContext(); // no implementation - XPCContext(JSContext* aJSContext, - JSObject* aGlobalObj, - int WrappedJSMapSize, - int WrappedNativeMapSize, - int WrappedJSClassMapSize, - int WrappedNativeClassMapSize); + XPCContext(XPCJSRuntime* aRuntime, JSContext* aJSContext); + private: - static const char* mStrings[IDX_TOTAL_COUNT]; - nsXPConnect* mXPConnect; + XPCJSRuntime* mRuntime; JSContext* mJSContext; - JSObject* mGlobalObj; - JSObject2WrappedJSMap* mWrappedJSMap; - Native2WrappedNativeMap* mWrappedNativeMap; - IID2WrappedJSClassMap* mWrappedJSClassMap; - IID2WrappedNativeClassMap* mWrappedNativeClassMap; - jsid mStrIDs[IDX_TOTAL_COUNT]; nsresult mLastResult; nsresult mPendingResult; nsIXPCSecurityManager* mSecurityManager; @@ -378,6 +353,168 @@ private: LangType mCallingLangType; }; +/***************************************************************************/ +// A class to put on the stack when we are entering xpconnect from an entry +// point where the JSContext is known. This pushs and pops the given context +// with the nsThreadJSContextStack service as this object goes into and out +// of scope. It is optimized to not push/pop the cx if it is already on top +// of the stack. + +class AutoPushJSContext +{ +public: + AutoPushJSContext(JSContext *cx, nsXPConnect* xpc = nsnull); + ~AutoPushJSContext(); +private: + AutoPushJSContext(); // no implementation + +private: + nsIJSContextStack* mContextStack; +#ifdef DEBUG + JSContext* mDebugCX; +#endif +}; + +#define AUTO_PUSH_JSCONTEXT(cx) AutoPushJSContext _AutoPushJSContext(cx) +#define AUTO_PUSH_JSCONTEXT2(cx,xpc) AutoPushJSContext _AutoPushJSContext(cx,xpc) + +/***************************************************************************/ +// A class to put on the stack when we are entering xpconnect from an entry +// point where we need to use a JSContext that is 'compatible' with the one +// indicated. 'Compatible' means that the JSContext is from the same JSRuntime +// and is either already the top JSContext in the nsThreadJSContextStack or +// is a JSContext that xpconnect manages on a per thread basis for use when +// the nsThreadJSContextStack is empty. If the top JSContext on the +// nsThreadJSContextStack hails from a JSRuntime that is different from the +// JSRuntime of the indicated JSContext then the JSContext returned from +// AutoPushCompatibleJSContext::GetJSContext() will be nsnull to indicate +// failure. +// +// In practice this class is used when we will be calling to a wrapped JS +// object. + +class AutoPushCompatibleJSContext +{ +public: + AutoPushCompatibleJSContext(JSRuntime* rt, nsXPConnect* xpc = nsnull); + ~AutoPushCompatibleJSContext(); + JSContext* GetJSContext() const {return mCX;} + +private: + AutoPushCompatibleJSContext(); // no implementation + +private: + nsIJSContextStack* mContextStack; + JSContext* mCX; +}; + +/***************************************************************************/ +// This class is used to track whether xpconnect was entered from JavaScCript +// or native code. This information is used to determine whther or not to call +// security hooks; i.e. the nsIXPCSecurityManager need not be called to protect +// xpconnect activities initiated by native code. Instances of this class are +// instatiated as auto objects at the various critical entry points of +// xpconnect. On entry they set a variable in the XPCContext to track the +// caller type and then restore the previous value upon destruction (when the +// scope is exited). + +class AutoPushCallingLangType +{ +public: + AutoPushCallingLangType(JSContext* cx, XPCContext::LangType type); + AutoPushCallingLangType(XPCContext* xpcc, XPCContext::LangType type); + ~AutoPushCallingLangType(); + + XPCContext* GetXPCContext() const + {return mXPCContext;} + JSContext* GetJSContext() const + {return mXPCContext ? nsnull : mXPCContext->GetJSContext();} + +private: + void ctorCommon(XPCContext::LangType type) + { + if(mXPCContext) + { + mOldCallingLangType = mXPCContext->SetCallingLangType(type); +#ifdef DEBUG + mDebugPushedCallingLangType = type; +#endif + } + } + +private: + XPCContext* mXPCContext; + XPCContext::LangType mOldCallingLangType; +#ifdef DEBUG + XPCContext::LangType mDebugPushedCallingLangType; +#endif +}; + +#define SET_CALLER_JAVASCRIPT(_context) \ + AutoPushCallingLangType _APCLT(_context, XPCContext::LANG_JS) + +#define SET_CALLER_NATIVE(_context) \ + AutoPushCallingLangType _APCLT(_context, XPCContext::LANG_NATIVE) + +/***************************************************************************/ +// this interfaces exists so we can refcount nsXPCWrappedNativeScope + +// {EA984010-97EA-11d3-BB2A-00805F8A5DD7} +#define NS_IXPCONNECT_WRAPPED_NATIVE_SCOPE_IID \ +{ 0xea984010, 0x97ea, 0x11d3, \ + { 0xbb, 0x2a, 0x0, 0x80, 0x5f, 0x8a, 0x5d, 0xd7 } } + +class nsIXPCWrappedNativeScope : public nsISupports +{ +public: + NS_DEFINE_STATIC_IID_ACCESSOR(NS_IXPCONNECT_WRAPPED_NATIVE_SCOPE_IID) + NS_IMETHOD DebugDump(PRInt16 depth) = 0; +}; + +/*************************/ +// Each nsXPCWrappedNative has a reference to one of these scope objects. +// An instance of nsXPCWrappedNativeScope is associated with a global object +// using nsIXPConnect::InitClasses. At that same time a Components object is +// attached to that global object. The scope object for any given JSObject is +// found by doing a name lookup for the 'Components' object. When we are asked +// to build a wrapper around a native object we look for a scope object and +// from it look for an existing wrapper around the given native object. Thus, +// each wrapped native object exposing a given interface can have zero or one +// wrapper for each scope. + +class nsXPCWrappedNativeScope : nsIXPCWrappedNativeScope +{ +public: + NS_DECL_ISUPPORTS + NS_IMETHOD DebugDump(PRInt16 depth); +public: + XPCJSRuntime* + GetRuntime() const {return mRuntime;} + + Native2WrappedNativeMap* + GetWrappedNativeMap() const {return mWrappedNativeMap;} + + static nsXPCWrappedNativeScope* + FindInJSObjectScope(XPCContext* xpcc, JSObject* obj); + + static void + DebugDumpAllScopes(PRInt16 depth); + + JSBool IsValid() const {return mRuntime != nsnull;} + + nsXPCWrappedNativeScope(XPCContext* xpcc); + virtual ~nsXPCWrappedNativeScope(); +private: + nsXPCWrappedNativeScope(); // not implemented + +private: + static nsXPCWrappedNativeScope* gScopes; + + XPCJSRuntime* mRuntime; + Native2WrappedNativeMap* mWrappedNativeMap; + nsXPCWrappedNativeScope* mNext; +}; + /***************************************************************************/ // code for throwing exceptions into JS @@ -418,6 +555,8 @@ private: JSBool mVerbose; }; + +/***************************************************************************/ /***************************************************************************/ // this interfaces exists so we can refcount nsXPCWrappedJSClass @@ -430,7 +569,7 @@ class nsIXPCWrappedJSClass : public nsISupports { public: NS_DEFINE_STATIC_IID_ACCESSOR(NS_IXPCONNECT_WRAPPED_JS_CLASS_IID) - NS_IMETHOD DebugDump(int depth) = 0; + NS_IMETHOD DebugDump(PRInt16 depth) = 0; }; /*************************/ @@ -439,17 +578,17 @@ class nsXPCWrappedJSClass : public nsIXPCWrappedJSClass { // all the interface method declarations... NS_DECL_ISUPPORTS - NS_IMETHOD DebugDump(int depth); + NS_IMETHOD DebugDump(PRInt16 depth); public: - static nsXPCWrappedJSClass* GetNewOrUsedClass(XPCContext* xpcc, + static nsXPCWrappedJSClass* GetNewOrUsedClass(XPCJSRuntime* rt, REFNSIID aIID); REFNSIID GetIID() const {return mIID;} - XPCContext* GetXPCContext() const {return mXPCContext;} + XPCJSRuntime* GetJSRuntime() const {return mRuntime;} nsIInterfaceInfo* GetInterfaceInfo() const {return mInfo;} const char* GetInterfaceName(); - static JSBool InitForContext(XPCContext* xpcc); + static JSBool InitClasses(XPCContext* xpcc, JSObject* aGlobalJSObj); static JSBool IsWrappedJS(nsISupports* aPtr); NS_IMETHOD DelegatedQueryInterface(nsXPCWrappedJS* self, REFNSIID aIID, @@ -461,17 +600,12 @@ public: const nsXPTMethodInfo* info, nsXPTCMiniVariant* params); - void XPCContextBeingDestroyed(); - virtual ~nsXPCWrappedJSClass(); private: nsXPCWrappedJSClass(); // not implemented - nsXPCWrappedJSClass(XPCContext* xpcc, REFNSIID aIID, + nsXPCWrappedJSClass(XPCJSRuntime* rt, REFNSIID aIID, nsIInterfaceInfo* aInfo); - JSContext* GetJSContext() const - {return mXPCContext ? mXPCContext->GetJSContext() : nsnull;} - JSObject* CreateIIDJSObject(REFNSIID aIID); JSObject* NewOutObject(JSContext* cx); JSObject* CallQueryInterfaceOnJSObject(JSObject* jsobj, REFNSIID aIID); @@ -510,7 +644,7 @@ private: void** pp); private: - XPCContext* mXPCContext; + XPCJSRuntime* mRuntime; nsIInterfaceInfo* mInfo; char* mName; nsIID mIID; @@ -538,15 +672,15 @@ public: nsXPCWrappedJSClass* GetClass() const {return mClass;} REFNSIID GetIID() const {return GetClass()->GetIID();} nsXPCWrappedJS* GetRootWrapper() const {return mRoot;} - void DebugDump(int depth); + void DebugDump(PRInt16 depth); - void XPCContextBeingDestroyed(); nsXPCWrappedJS* Find(REFNSIID aIID); virtual ~nsXPCWrappedJS(); private: nsXPCWrappedJS(); // not implemented - nsXPCWrappedJS(JSObject* aJSObj, + nsXPCWrappedJS(XPCContext* xpcc, + JSObject* aJSObj, nsXPCWrappedJSClass* aClass, nsXPCWrappedJS* root); @@ -562,11 +696,9 @@ class nsXPCWrappedJSMethods : public nsIXPConnectWrappedJSMethods { public: NS_DECL_ISUPPORTS - NS_IMETHOD GetJSObject(JSObject** aJSObj); - NS_IMETHOD GetInterfaceInfo(nsIInterfaceInfo** info); - NS_IMETHOD GetIID(nsIID** iid); // returns IAllocatator alloc'd copy - NS_IMETHOD DebugDump(int depth); + NS_DECL_NSIXPCONNECTWRAPPEDJSMETHODS +public: nsXPCWrappedJSMethods(nsXPCWrappedJS* aWrapper); virtual ~nsXPCWrappedJSMethods(); // used in nsXPCWrappedJS::DebugDump @@ -596,10 +728,10 @@ private: }; public: - JSObject* invokeFuncObj; jsid id; /* hashed name for quick JS property lookup */ uintN index; /* in InterfaceInfo for const, method, and get */ uintN index2; /* in InterfaceInfo for set */ + intN argc; private: uint16 flags; public: @@ -630,7 +762,7 @@ class nsIXPCWrappedNativeClass : public nsISupports { public: NS_DEFINE_STATIC_IID_ACCESSOR(NS_IXPCONNECT_WRAPPED_NATIVE_CLASS_IID) - NS_IMETHOD DebugDump(int depth) = 0; + NS_IMETHOD DebugDump(PRInt16 depth) = 0; }; /*************************/ @@ -639,28 +771,23 @@ class nsXPCWrappedNativeClass : public nsIXPCWrappedNativeClass { // all the interface method declarations... NS_DECL_ISUPPORTS - NS_IMETHOD DebugDump(int depth); + NS_IMETHOD DebugDump(PRInt16 depth); public: static nsXPCWrappedNativeClass* GetNewOrUsedClass(XPCContext* xpcc, REFNSIID aIID, nsresult* pErr); - + REFNSIID GetIID() const {return mIID;} const char* GetInterfaceName(); const char* GetMemberName(const XPCNativeMemberDescriptor* desc) const; nsIInterfaceInfo* GetInterfaceInfo() const {return mInfo;} - XPCContext* GetXPCContext() const {return mXPCContext;} - JSContext* GetJSContext() const - {return mXPCContext ? mXPCContext->GetJSContext() : nsnull;} + XPCJSRuntime* GetRuntime() const {return mRuntime;} nsIXPCScriptable* GetArbitraryScriptable() const - {return mXPCContext ? - mXPCContext->GetXPConnect()->GetArbitraryScriptable() : - nsnull;} + {return mRuntime->GetXPConnect()->GetArbitraryScriptable();} - static JSBool InitForContext(XPCContext* xpcc); - static JSBool OneTimeInit(); - - JSObject* NewInstanceJSObject(nsXPCWrappedNative* self); + JSObject* NewInstanceJSObject(XPCContext* xpcc, + JSObject* aGlobalObject, + nsXPCWrappedNative* self); static nsXPCWrappedNative* GetWrappedNativeOfJSObject(JSContext* cx, JSObject* jsobj); @@ -678,12 +805,12 @@ public: // but was accessed from JS using "CamelCased". This is here to catch // mistakes caused by the confusion magnet that JS methods are by // convention 'foo' while C++ members are by convention 'Foo'. - void HandlePossibleNameCaseError(jsid id); + void HandlePossibleNameCaseError(JSContext* cx, jsid id); -#define HANDLE_POSSIBLE_NAME_CASE_ERROR(_clazz,_id) \ - _clazz->HandlePossibleNameCaseError(_id) +#define HANDLE_POSSIBLE_NAME_CASE_ERROR(_cx, _clazz,_id) \ + _clazz->HandlePossibleNameCaseError(_cx, _id) #else -#define HANDLE_POSSIBLE_NAME_CASE_ERROR(_clazz,_id) ((void)0) +#define HANDLE_POSSIBLE_NAME_CASE_ERROR(_cx, _clazz,_id) ((void)0) #endif static JSBool GetConstantAsJSVal(JSContext *cx, @@ -721,7 +848,8 @@ public: return CallWrappedMethod(cx, wrapper, desc, CALL_SETTER, 1, vp, nsnull); } - JSObject* GetInvokeFunObj(const XPCNativeMemberDescriptor* desc); + JSObject* NewFunObj(JSContext *cx, JSObject *obj, + const XPCNativeMemberDescriptor* desc); JSBool DynamicEnumerate(nsXPCWrappedNative* wrapper, nsIXPCScriptable* ds, @@ -734,12 +862,11 @@ public: JSIterateOp enum_op, jsval *statep, jsid *idp); - void XPCContextBeingDestroyed(); - virtual ~nsXPCWrappedNativeClass(); private: nsXPCWrappedNativeClass(); // not implemented - nsXPCWrappedNativeClass(XPCContext* xpcc, REFNSIID aIID, + nsXPCWrappedNativeClass(XPCContext* xpcc, + REFNSIID aIID, nsIInterfaceInfo* aInfo); void ThrowBadResultException(JSContext* cx, @@ -762,7 +889,7 @@ private: {nsXPConnect::GetJSThrower()-> ThrowException(errNum, cx, this, desc);} - JSBool BuildMemberDescriptors(); + JSBool BuildMemberDescriptors(XPCContext* xpcc); void DestroyMemberDescriptors(); @@ -789,7 +916,7 @@ private: nsID** result); private: - XPCContext* mXPCContext; + XPCJSRuntime* mRuntime; nsIID mIID; char* mName; nsIInterfaceInfo* mInfo; @@ -801,27 +928,25 @@ private: class nsXPCWrappedNative : public nsIXPConnectWrappedNative { +public: // all the interface method declarations... NS_DECL_ISUPPORTS + NS_DECL_NSIXPCONNECTWRAPPEDNATIVE - NS_IMETHOD GetDynamicScriptable(nsIXPCScriptable** p); - NS_IMETHOD GetArbitraryScriptable(nsIXPCScriptable** p); - NS_IMETHOD GetJSObject(JSObject** aJSObj); - NS_IMETHOD GetNative(nsISupports** aObj); - NS_IMETHOD GetInterfaceInfo(nsIInterfaceInfo** info); - NS_IMETHOD GetIID(nsIID** iid); // returns IAllocatator alloc'd copy - NS_IMETHOD DebugDump(int depth); - NS_IMETHOD SetFinalizeListener(nsIXPConnectFinalizeListener* aListener); - NS_IMETHOD GetJSObjectPrototype(JSObject** aJSObj); + // non-interface implementation public: - static nsXPCWrappedNative* GetNewOrUsedWrapper(XPCContext* xpcc, - nsISupports* aObj, - REFNSIID aIID, - nsresult* pErr); + static nsXPCWrappedNative* + GetNewOrUsedWrapper(XPCContext* xpcc, + nsXPCWrappedNativeScope* aScope, + JSObject* aGlobalObject, + nsISupports* aObj, + REFNSIID aIID, + nsresult* pErr); nsISupports* GetNative() const {return mObj;} JSObject* GetJSObject() const {return mJSObj;} nsXPCWrappedNativeClass* GetClass() const {return mClass;} + nsXPCWrappedNativeScope* GetScope() const {return mScope;} REFNSIID GetIID() const {return GetClass()->GetIID();} nsIXPCScriptable* GetDynamicScriptable() const @@ -835,14 +960,15 @@ public: void JSObjectFinalized(JSContext *cx, JSObject *obj); - void XPCContextBeingDestroyed(); - virtual ~nsXPCWrappedNative(); private: nsXPCWrappedNative(); // not implemented - nsXPCWrappedNative(nsISupports* aObj, - nsXPCWrappedNativeClass* aClass, - nsXPCWrappedNative* root); + nsXPCWrappedNative(XPCContext* xpcc, + nsISupports* aObj, + nsXPCWrappedNativeScope* aScope, + JSObject* aGlobalObject, + nsXPCWrappedNativeClass* aClass, + nsXPCWrappedNative* root); nsXPCWrappedNative* Find(REFNSIID aIID); @@ -850,6 +976,7 @@ private: nsISupports* mObj; JSObject* mJSObj; nsXPCWrappedNativeClass* mClass; + nsXPCWrappedNativeScope* mScope; nsIXPCScriptable* mDynamicScriptable; // only set in root! JSUint32 mDynamicScriptableFlags; // only set in root! nsXPCWrappedNative* mRoot; @@ -859,16 +986,6 @@ private: /***************************************************************************/ -class nsXPCArbitraryScriptable : public nsIXPCScriptable -{ -public: - // all the interface method declarations... - NS_DECL_ISUPPORTS - XPC_DECLARE_IXPCSCRIPTABLE - -public: - nsXPCArbitraryScriptable(); -}; /***************************************************************************/ // data convertion @@ -881,7 +998,7 @@ public: static JSBool NativeData2JS(JSContext* cx, jsval* d, const void* s, const nsXPTType& type, const nsID* iid, - nsresult* pErr); + JSObject* scope, nsresult* pErr); static JSBool JSData2Native(JSContext* cx, void* d, jsval s, const nsXPTType& type, @@ -891,7 +1008,7 @@ public: static JSBool NativeArray2JS(JSContext* cx, jsval* d, const void** s, const nsXPTType& type, const nsID* iid, - JSUint32 count, + JSUint32 count, JSObject* scope, nsresult* pErr); static JSBool JSArray2Native(JSContext* cx, void** d, jsval s, @@ -929,6 +1046,104 @@ extern JSBool JS_DLL_CALLBACK XPC_JSArgumentFormatter(JSContext *cx, const char *format, JSBool fromJS, jsval **vpp, va_list *app); +/***************************************************************************/ + +class nsXPCArbitraryScriptable : public nsIXPCScriptable +{ +public: + // all the interface method declarations... + NS_DECL_ISUPPORTS + XPC_DECLARE_IXPCSCRIPTABLE + +public: + nsXPCArbitraryScriptable(); +}; + +/***************************************************************************/ + +class XPCJSStack +{ +public: + static nsIJSStackFrameLocation* CreateStack(JSContext* cx); + + static nsIJSStackFrameLocation* CreateStackFrameLocation( + JSBool isJSFrame, + const char* aFilename, + const char* aFunctionName, + PRInt32 aLineNumber, + nsIJSStackFrameLocation* aCaller); +private: + XPCJSStack(); // not implemented +}; + +/***************************************************************************/ + +class nsXPCException : public nsIXPCException +{ +public: + // all the interface method declarations... + NS_DECL_ISUPPORTS + NS_DECL_NSIXPCEXCEPTION + + static nsXPCException* NewException(const char *aMessage, + nsresult aResult, + nsIJSStackFrameLocation *aLocation, + nsISupports *aData); + + static JSBool NameAndFormatForNSResult(nsresult rv, + const char** name, + const char** format); + static void* IterateNSResults(nsresult* rv, + const char** name, + const char** format, + void** iterp); + nsXPCException(); + virtual ~nsXPCException(); + +protected: + void Reset(); +private: + char* mMessage; + nsresult mResult; + char* mName; + nsIJSStackFrameLocation* mLocation; + nsISupports* mData; + PRBool mInitialized; +}; + +class xpcJSErrorReport : public nsIJSErrorReport +{ + NS_DECL_ISUPPORTS + NS_DECL_NSIJSERRORREPORT + + static xpcJSErrorReport* NewReport(const char* aMessage, + const JSErrorReport* aReport); + +protected: + xpcJSErrorReport(); + virtual ~xpcJSErrorReport(); + +private: + char* mMessage; + char* mFilename; + PRUint32 mLineno; + char* mLinebuf; + PRUint32 mTokenIndex; + PRUint32 mFlags; + PRUint32 mErrorNumber; +}; + +/***************************************************************************/ + +extern JSClass WrappedNative_class; +extern JSClass WrappedNativeWithCall_class; + +extern JSBool JS_DLL_CALLBACK +WrappedNative_CallMethod(JSContext *cx, JSObject *obj, + uintN argc, jsval *argv, jsval *vp); + +extern JSBool xpc_InitWrappedNativeJSOps(); + /***************************************************************************/ /* * nsJSID implements nsIJSID. It is also used by nsJSIID and nsJSCID as a @@ -1022,48 +1237,6 @@ private: }; -JSObject* -xpc_NewIDObject(JSContext *cx, const nsID& aID); - -nsID* -xpc_JSObjectToID(JSContext *cx, JSObject* obj); - -/***************************************************************************/ -// 'Components' objects - -class nsXPCInterfaces; -class nsXPCClasses; -class nsXPCClassesByID; -class nsXPCResults; - -class nsXPCComponents : public nsIXPCComponents, public nsIXPCScriptable -{ -public: - NS_DECL_ISUPPORTS - NS_DECL_NSIXPCCOMPONENTS - XPC_DECLARE_IXPCSCRIPTABLE - - nsXPCComponents(); - virtual ~nsXPCComponents(); -private: - nsXPCInterfaces* mInterfaces; - nsXPCClasses* mClasses; - nsXPCClassesByID* mClassesByID; - nsXPCResults* mResults; - PRBool mCreating; -}; - -/***************************************************************************/ - -extern JSClass WrappedNative_class; -extern JSClass WrappedNativeWithCall_class; - -extern JSBool JS_DLL_CALLBACK -WrappedNative_CallMethod(JSContext *cx, JSObject *obj, - uintN argc, jsval *argv, jsval *vp); - -extern JSBool xpc_WrappedNativeJSOpsOneTimeInit(); - /***************************************************************************/ #define NS_XPC_THREAD_JSCONTEXT_STACK_CID \ @@ -1083,107 +1256,6 @@ public: virtual ~nsXPCThreadJSContextStackImpl(); }; -/***************************************************************************/ -// A class to put on the stack when we are entering xpconnect from an entry -// point where the JSContext is known. This pushs and pops the given context -// with the nsThreadJSContextStack service as this object goes into and out -// of scope. It is optimized to not push/pop the cx if it is already on top -// of the stack. - -class AutoPushJSContext -{ -public: - AutoPushJSContext(JSContext *cx, nsXPConnect* xpc = nsnull); - ~AutoPushJSContext(); -private: - AutoPushJSContext(); // no implementation - -private: - nsIJSContextStack* mContextStack; -#ifdef DEBUG - JSContext* mDebugCX; -#endif -}; - -#define AUTO_PUSH_JSCONTEXT(cx) AutoPushJSContext _AutoPushJSContext(cx) -#define AUTO_PUSH_JSCONTEXT2(cx,xpc) AutoPushJSContext _AutoPushJSContext(cx,xpc) - -/***************************************************************************/ -// A class to put on the stack when we are entering xpconnect from an entry -// point where we need to use a JSContext that is 'compatible' with the one -// indicated. 'Compatible' means that the JSContext is from the same JSRuntime -// and is either already the top JSContext in the nsThreadJSContextStack or -// is a JSContext that xpconnect manages on a per thread basis for use when -// the nsThreadJSContextStack is empty. If the top JSContext on the -// nsThreadJSContextStack hails from a JSRuntime that is different from the -// JSRuntime of the indicated JSContext then the JSContext returned from -// AutoPushCompatibleJSContext::GetJSContext() will be nsnull to indicate -// failure. -// -// In practice this class is used when we will be calling to a wrapped JS -// object. - -class AutoPushCompatibleJSContext -{ -public: - AutoPushCompatibleJSContext(JSContext *cx, nsXPConnect* xpc = nsnull); - ~AutoPushCompatibleJSContext(); - JSContext* GetJSContext() const {return mCX;} - -private: - AutoPushCompatibleJSContext(); // no implementation - -private: - nsIJSContextStack* mContextStack; - JSContext* mCX; -}; - -/***************************************************************************/ -// This class is used to track whether xpconnect was entered from JavaScCript -// or native code. This information is used to determine whther or not to call -// security hooks; i.e. the nsIXPCSecurityManager need not be called to protect -// xpconnect activities initiated by native code. Instances of this class are -// instatiated as auto objects at the various critical entry points of -// xpconnect. On entry they set a variable in the XPCContext to track the -// caller type and then restore the previous value upon destruction (when the -// scope is exited). - -class AutoPushCallingLangType -{ -public: - AutoPushCallingLangType(JSContext* cx, XPCContext::LangType type); - AutoPushCallingLangType(XPCContext* xpcc, XPCContext::LangType type); - ~AutoPushCallingLangType(); - - XPCContext* GetXPCContext() const - {return mXPCContext;} - JSContext* GetJSContext() const - {return mXPCContext ? nsnull : mXPCContext->GetJSContext();} - -private: - void ctorCommon(XPCContext::LangType type) - { - if(mXPCContext) - mOldCallingLangType = mXPCContext->SetCallingLangType(type); -#ifdef DEBUG - mDebugPushedCallingLangType = type; -#endif - } - -private: - XPCContext* mXPCContext; - XPCContext::LangType mOldCallingLangType; -#ifdef DEBUG - XPCContext::LangType mDebugPushedCallingLangType; -#endif -}; - -#define SET_CALLER_JAVASCRIPT(_context) \ - AutoPushCallingLangType _APCLT(_context, XPCContext::LANG_JS) - -#define SET_CALLER_NATIVE(_context) \ - AutoPushCallingLangType _APCLT(_context, XPCContext::LANG_NATIVE) - /***************************************************************************/ #define NS_JS_RUNTIME_SERVICE_CID \ {0xb5e65b52, 0x1dd1, 0x11b2, \ @@ -1195,7 +1267,7 @@ class nsJSRuntimeServiceImpl : public nsIJSRuntimeService NS_DECL_ISUPPORTS NS_DECL_NSIJSRUNTIMESERVICE - static nsJSRuntimeServiceImpl *GetSingleton(); + static nsJSRuntimeServiceImpl* GetSingleton(); static void FreeSingleton(); nsJSRuntimeServiceImpl(); @@ -1205,78 +1277,40 @@ class nsJSRuntimeServiceImpl : public nsIJSRuntimeService }; /***************************************************************************/ +// 'Components' object -class XPCJSStack +class nsXPCComponents : public nsIXPCComponents, public nsIXPCScriptable { public: - static nsIJSStackFrameLocation* CreateStack(JSContext* cx); + NS_DECL_ISUPPORTS + NS_DECL_NSIXPCCOMPONENTS + XPC_DECLARE_IXPCSCRIPTABLE + +public: + static JSBool + AttachNewComponentsObject(XPCContext* xpcc, + JSObject* obj); + + virtual ~nsXPCComponents(); - static nsIJSStackFrameLocation* CreateStackFrameLocation( - JSBool isJSFrame, - const char* aFilename, - const char* aFunctionName, - PRInt32 aLineNumber, - nsIJSStackFrameLocation* aCaller); private: - XPCJSStack(); // not implemented + nsXPCComponents(); + +private: + nsXPCInterfaces* mInterfaces; + nsXPCClasses* mClasses; + nsXPCClassesByID* mClassesByID; + nsXPCResults* mResults; + PRBool mCreating; }; /***************************************************************************/ -class nsXPCException : public nsIXPCException -{ -public: - // all the interface method declarations... - NS_DECL_ISUPPORTS - NS_DECL_NSIXPCEXCEPTION +JSObject* +xpc_NewIDObject(JSContext *cx, JSObject* jsobj, const nsID& aID); - static nsXPCException* NewException(const char *aMessage, - nsresult aResult, - nsIJSStackFrameLocation *aLocation, - nsISupports *aData); - - static JSBool NameAndFormatForNSResult(nsresult rv, - const char** name, - const char** format); - static void* IterateNSResults(nsresult* rv, - const char** name, - const char** format, - void** iterp); - nsXPCException(); - virtual ~nsXPCException(); - -protected: - void Reset(); -private: - char* mMessage; - nsresult mResult; - char* mName; - nsIJSStackFrameLocation* mLocation; - nsISupports* mData; - PRBool mInitialized; -}; - -class xpcJSErrorReport : public nsIJSErrorReport -{ - NS_DECL_ISUPPORTS - NS_DECL_NSIJSERRORREPORT - - static xpcJSErrorReport* NewReport(const char* aMessage, - const JSErrorReport* aReport); - -protected: - xpcJSErrorReport(); - virtual ~xpcJSErrorReport(); - -private: - char* mMessage; - char* mFilename; - PRUint32 mLineno; - char* mLinebuf; - PRUint32 mTokenIndex; - PRUint32 mFlags; - PRUint32 mErrorNumber; -}; +nsID* +xpc_JSObjectToID(JSContext *cx, JSObject* obj); /***************************************************************************/ diff --git a/mozilla/js/src/xpconnect/src/xpcthrower.cpp b/mozilla/js/src/xpconnect/src/xpcthrower.cpp index 40369c83d89..08f9459e08c 100644 --- a/mozilla/js/src/xpconnect/src/xpcthrower.cpp +++ b/mozilla/js/src/xpconnect/src/xpcthrower.cpp @@ -224,7 +224,11 @@ XPCJSThrower::ThrowExceptionObject(JSContext* cx, nsIXPCException* e) nsXPConnect* xpc = nsXPConnect::GetXPConnect(); if(!xpc) return JS_FALSE; - rv = xpc->WrapNative(cx, e, NS_GET_IID(nsIXPCException), &wrapper); + + // XXX funky + JSObject* obj = JS_GetGlobalObject(cx); + + rv = xpc->WrapNative(cx, obj, e, NS_GET_IID(nsIXPCException), &wrapper); NS_RELEASE(xpc); if(NS_SUCCEEDED(rv)) { diff --git a/mozilla/js/src/xpconnect/src/xpcwrappedjs.cpp b/mozilla/js/src/xpconnect/src/xpcwrappedjs.cpp index c2cd699c19c..ea26fba864f 100644 --- a/mozilla/js/src/xpconnect/src/xpcwrappedjs.cpp +++ b/mozilla/js/src/xpconnect/src/xpcwrappedjs.cpp @@ -112,18 +112,22 @@ nsXPCWrappedJS::GetNewOrUsedWrapper(XPCContext* xpcc, nsXPCWrappedJS* root; nsXPCWrappedJS* wrapper = nsnull; nsXPCWrappedJSClass* clazz = nsnull; + XPCJSRuntime* rt; + + if(!xpcc || !(rt = xpcc->GetRuntime()) || !aJSObj) + { + NS_ASSERTION(0,"bad param"); + return nsnull; + } - NS_PRECONDITION(xpcc, "bad param"); - NS_PRECONDITION(aJSObj, "bad param"); - - map = xpcc->GetWrappedJSMap(); + map = rt->GetWrappedJSMap(); if(!map) { NS_ASSERTION(map,"bad map"); return nsnull; } - clazz = nsXPCWrappedJSClass::GetNewOrUsedClass(xpcc, aIID); + clazz = nsXPCWrappedJSClass::GetNewOrUsedClass(rt, aIID); if(!clazz) return nsnull; // from here on we need to return through 'return_wrapper' @@ -134,7 +138,10 @@ nsXPCWrappedJS::GetNewOrUsedWrapper(XPCContext* xpcc, goto return_wrapper; // look for the root wrapper - root = map->Find(rootJSObj); + { // scoped lock + nsAutoLock lock(rt->GetMapLock()); + root = map->Find(rootJSObj); + } if(root) { wrapper = root->Find(aIID); @@ -150,9 +157,12 @@ nsXPCWrappedJS::GetNewOrUsedWrapper(XPCContext* xpcc, if(rootJSObj == aJSObj) { // the root will do double duty as the interface wrapper - wrapper = root = new nsXPCWrappedJS(aJSObj, clazz, nsnull); + wrapper = root = new nsXPCWrappedJS(xpcc, aJSObj, clazz, nsnull); if(root) + { // scoped lock + nsAutoLock lock(rt->GetMapLock()); map->Add(root); + } goto return_wrapper; } else @@ -160,16 +170,19 @@ nsXPCWrappedJS::GetNewOrUsedWrapper(XPCContext* xpcc, // just a root wrapper nsXPCWrappedJSClass* rootClazz; rootClazz = nsXPCWrappedJSClass::GetNewOrUsedClass( - xpcc, NS_GET_IID(nsISupports)); + rt, NS_GET_IID(nsISupports)); if(!rootClazz) goto return_wrapper; - root = new nsXPCWrappedJS(rootJSObj, rootClazz, nsnull); + root = new nsXPCWrappedJS(xpcc, rootJSObj, rootClazz, nsnull); NS_RELEASE(rootClazz); if(!root) goto return_wrapper; - map->Add(root); + { // scoped lock + nsAutoLock lock(rt->GetMapLock()); + map->Add(root); + } } } @@ -179,7 +192,7 @@ nsXPCWrappedJS::GetNewOrUsedWrapper(XPCContext* xpcc, if(!wrapper) { - wrapper = new nsXPCWrappedJS(aJSObj, clazz, root); + wrapper = new nsXPCWrappedJS(xpcc, aJSObj, clazz, root); if(!wrapper) goto return_wrapper; } @@ -197,7 +210,8 @@ return_wrapper: #pragma warning(disable : 4355) // OK to pass "this" in member initializer #endif -nsXPCWrappedJS::nsXPCWrappedJS(JSObject* aJSObj, +nsXPCWrappedJS::nsXPCWrappedJS(XPCContext* xpcc, + JSObject* aJSObj, nsXPCWrappedJSClass* aClass, nsXPCWrappedJS* root) : mJSObj(aJSObj), @@ -216,39 +230,29 @@ nsXPCWrappedJS::nsXPCWrappedJS(JSObject* aJSObj, NS_INIT_REFCNT(); NS_ADDREF_THIS(); NS_ADDREF(aClass); - NS_ASSERTION(mClass->GetXPCContext(),"bad context when making wrapper"); - JS_AddNamedRoot(mClass->GetXPCContext()->GetJSContext(), &mJSObj, + NS_ASSERTION(xpcc && xpcc->GetJSContext(), "bad context"); + JS_AddNamedRoot(xpcc->GetJSContext(), &mJSObj, "nsXPCWrappedJS::mJSObj"); } -void -nsXPCWrappedJS::XPCContextBeingDestroyed() -{ - if(mJSObj) - { - XPCContext* xpcc; - if(mClass && nsnull != (xpcc = mClass->GetXPCContext())) - JS_RemoveRoot(xpcc->GetJSContext(), &mJSObj); - mJSObj = nsnull; - } -} - nsXPCWrappedJS::~nsXPCWrappedJS() { NS_PRECONDITION(0 == mRefCnt, "refcounting error"); if(mClass) { - XPCContext* xpcc; - if(nsnull != (xpcc = mClass->GetXPCContext())) + XPCJSRuntime* rt = nsXPConnect::GetRuntime(); + if(rt) { if(mRoot == this) { - JSObject2WrappedJSMap* map; - if(nsnull != (map = xpcc->GetWrappedJSMap())) + JSObject2WrappedJSMap* map = rt->GetWrappedJSMap(); + if(map) + { + nsAutoLock lock(rt->GetMapLock()); map->Remove(this); + } } - if(mJSObj) - JS_RemoveRoot(xpcc->GetJSContext(), &mJSObj); + JS_RemoveRootRT(rt->GetJSRuntime(), &mJSObj); } NS_RELEASE(mClass); } @@ -292,7 +296,6 @@ nsXPCWrappedJS::CallMethod(PRUint16 methodIndex, const nsXPTMethodInfo* info, nsXPTCMiniVariant* params) { - SET_CALLER_NATIVE(GetClass()->GetXPCContext()); return GetClass()->CallMethod(this, methodIndex, info, params); } @@ -385,8 +388,9 @@ nsXPCWrappedJSMethods::GetIID(nsIID** iid) /***************************************************************************/ + NS_IMETHODIMP -nsXPCWrappedJSMethods::DebugDump(int depth) +nsXPCWrappedJSMethods::DebugDump(PRInt16 depth) { #ifdef DEBUG XPC_LOG_ALWAYS(("nsXPCWrappedJSMethods @ %x with mRefCnt = %d for...", \ @@ -399,7 +403,7 @@ nsXPCWrappedJSMethods::DebugDump(int depth) } void -nsXPCWrappedJS::DebugDump(int depth) +nsXPCWrappedJS::DebugDump(PRInt16 depth) { #ifdef DEBUG XPC_LOG_ALWAYS(("nsXPCWrappedJS @ %x with mRefCnt = %d", this, mRefCnt)); @@ -440,3 +444,4 @@ nsXPCWrappedJS::DebugDump(int depth) XPC_LOG_OUTDENT(); #endif } + diff --git a/mozilla/js/src/xpconnect/src/xpcwrappedjsclass.cpp b/mozilla/js/src/xpconnect/src/xpcwrappedjsclass.cpp index ff9a2894c11..7e84e47fd2e 100644 --- a/mozilla/js/src/xpconnect/src/xpcwrappedjsclass.cpp +++ b/mozilla/js/src/xpconnect/src/xpcwrappedjsclass.cpp @@ -36,8 +36,6 @@ #include "xpcprivate.h" -const char XPC_QUERY_INTERFACE_STR[] = "QueryInterface"; - NS_IMPL_ISUPPORTS1(nsXPCWrappedJSClass, nsIXPCWrappedJSClass) // the value of this variable is never used - we use its address as a sentinel @@ -45,47 +43,48 @@ static uint32 zero_methods_descriptor; // static nsXPCWrappedJSClass* -nsXPCWrappedJSClass::GetNewOrUsedClass(XPCContext* xpcc, +nsXPCWrappedJSClass::GetNewOrUsedClass(XPCJSRuntime* rt, REFNSIID aIID) { - IID2WrappedJSClassMap* map; + NS_PRECONDITION(rt, "bad param"); + nsXPCWrappedJSClass* clazz = nsnull; - NS_PRECONDITION(xpcc, "bad param"); + { // scoped lock + nsAutoLock lock(rt->GetMapLock()); + IID2WrappedJSClassMap* map = rt->GetWrappedJSClassMap(); + clazz = map->Find(aIID); + } - map = xpcc->GetWrappedJSClassMap(); - NS_ASSERTION(map,"bad map"); - clazz = map->Find(aIID); if(clazz) { NS_ADDREF(clazz); } else { - nsIInterfaceInfoManager* iimgr; - if(nsnull != (iimgr = nsXPConnect::GetInterfaceInfoManager())) + nsCOMPtr iimgr = + dont_AddRef(nsXPConnect::GetInterfaceInfoManager()); + if(iimgr) { - nsIInterfaceInfo* info; - if(NS_SUCCEEDED(iimgr->GetInfoForIID(&aIID, &info))) + nsCOMPtr info; + if(NS_SUCCEEDED(iimgr->GetInfoForIID(&aIID, getter_AddRefs(info)))) { if(nsXPConnect::IsISupportsDescendant(info)) { - clazz = new nsXPCWrappedJSClass(xpcc, aIID, info); + clazz = new nsXPCWrappedJSClass(rt, aIID, info); if(!clazz->mDescriptors) NS_RELEASE(clazz); // sets clazz to nsnull } - NS_RELEASE(info); } - NS_RELEASE(iimgr); } } return clazz; } -nsXPCWrappedJSClass::nsXPCWrappedJSClass(XPCContext* xpcc, REFNSIID aIID, +nsXPCWrappedJSClass::nsXPCWrappedJSClass(XPCJSRuntime* rt, REFNSIID aIID, nsIInterfaceInfo* aInfo) - : mXPCContext(xpcc), + : mRuntime(rt), mInfo(aInfo), mName(nsnull), mIID(aIID), @@ -95,7 +94,10 @@ nsXPCWrappedJSClass::nsXPCWrappedJSClass(XPCContext* xpcc, REFNSIID aIID, NS_INIT_REFCNT(); NS_ADDREF_THIS(); - mXPCContext->GetWrappedJSClassMap()->Add(this); + { // scoped lock + nsAutoLock lock(rt->GetMapLock()); + rt->GetWrappedJSClassMap()->Add(this); + } uint16 methodCount; if(NS_SUCCEEDED(mInfo->GetMethodCount(&methodCount))) @@ -135,21 +137,23 @@ nsXPCWrappedJSClass::~nsXPCWrappedJSClass() { if(mDescriptors && mDescriptors != &zero_methods_descriptor) delete [] mDescriptors; - if(mXPCContext) - mXPCContext->GetWrappedJSClassMap()->Remove(this); + if(mRuntime) + { // scoped lock + nsAutoLock lock(mRuntime->GetMapLock()); + mRuntime->GetWrappedJSClassMap()->Remove(this); + } if(mName) nsAllocator::Free(mName); - NS_RELEASE(mInfo); + NS_IF_RELEASE(mInfo); } JSObject* nsXPCWrappedJSClass::CallQueryInterfaceOnJSObject(JSObject* jsobj, REFNSIID aIID) { -// XXX disable code to make us run the current JSContext until DOM -// JS_GetContextPrivate usage is fixed -// AutoPushCompatibleJSContext autoContext(GetJSContext()); -// JSContext* cx = autoContext.GetJSContext(); - JSContext* cx = GetJSContext(); + AutoPushCompatibleJSContext autoContext(mRuntime->GetJSRuntime()); + JSContext* cx = autoContext.GetJSContext(); + if(!cx) + return nsnull; JSObject* id; jsval retval; @@ -158,18 +162,15 @@ nsXPCWrappedJSClass::CallQueryInterfaceOnJSObject(JSObject* jsobj, REFNSIID aIID jsid funid; jsval fun; - if(!cx || !mXPCContext) - return nsnull; - // check upfront for the existence of the function property - funid = mXPCContext->GetStringID(XPCContext::IDX_QUERY_INTERFACE_STRING); + funid = mRuntime->GetStringID(XPCJSRuntime::IDX_QUERY_INTERFACE); if(!OBJ_GET_PROPERTY(cx, jsobj, funid, &fun) || JSVAL_IS_PRIMITIVE(fun)) return nsnull; jsval e; JSBool hadExpection = JS_GetPendingException(cx, &e); JSErrorReporter older = JS_SetErrorReporter(cx, nsnull); - id = xpc_NewIDObject(cx, aIID); + id = xpc_NewIDObject(cx, jsobj, aIID); if(id) { jsval args[1] = {OBJECT_TO_JSVAL(id)}; @@ -255,13 +256,12 @@ nsXPCWrappedJSClass::DelegatedQueryInterface(nsXPCWrappedJS* self, // else... // check if asking for an interface that we inherit from - nsIInterfaceInfo* current = GetInterfaceInfo(); - NS_ADDREF(current); - nsIInterfaceInfo* parent; - while(NS_SUCCEEDED(current->GetParent(&parent)) && parent) + nsCOMPtr current = GetInterfaceInfo(); + nsCOMPtr parent; + + while(NS_SUCCEEDED(current->GetParent(getter_AddRefs(parent))) && parent) { - NS_RELEASE(current); current = parent; nsIID* iid; @@ -271,27 +271,33 @@ nsXPCWrappedJSClass::DelegatedQueryInterface(nsXPCWrappedJS* self, nsAllocator::Free(iid); if(found) { - NS_RELEASE(current); *aInstancePtr = (void*) self; NS_ADDREF(self); return NS_OK; } } } - NS_RELEASE(current); // else... // check if the JSObject claims to implement this interface JSObject* jsobj = CallQueryInterfaceOnJSObject(self->GetJSObject(), aIID); if(jsobj) { - nsXPCWrappedJS* wrapper = - nsXPCWrappedJS::GetNewOrUsedWrapper(GetXPCContext(), - jsobj, aIID); - if(wrapper) + AutoPushCompatibleJSContext autoContext(mRuntime->GetJSRuntime()); + JSContext* cx = autoContext.GetJSContext(); + if(cx) { - *aInstancePtr = (void*) wrapper; - return NS_OK; + XPCContext* xpcc = nsXPConnect::GetContext(cx); + if(xpcc) + { + nsXPCWrappedJS* wrapper = + nsXPCWrappedJS::GetNewOrUsedWrapper(xpcc, jsobj, aIID); + if(wrapper) + { + *aInstancePtr = (void*) wrapper; + return NS_OK; + } + } } } @@ -355,7 +361,6 @@ nsXPCWrappedJSClass::GetArraySizeFromParam(JSContext* cx, return JS_TRUE; } - JSBool nsXPCWrappedJSClass::GetInterfaceTypeFromParam(JSContext* cx, const nsXPTMethodInfo* method, @@ -461,12 +466,6 @@ nsXPCWrappedJSClass::CallMethod(nsXPCWrappedJS* wrapper, uint16 methodIndex, nsresult pending_result = NS_OK; JSErrorReporter older; JSBool success; -// XXX disable code to make us run the current JSContext until DOM -// JS_GetContextPrivate usage is fixed -// AutoPushCompatibleJSContext autoContext(GetJSContext()); -// JSContext* cx = autoContext.GetJSContext(); - JSContext* cx = GetJSContext(); - JSBool readyToDoTheCall = JS_FALSE; nsID* conditional_iid = nsnull; JSBool iidIsOwned = JS_FALSE; @@ -478,6 +477,16 @@ nsXPCWrappedJSClass::CallMethod(nsXPCWrappedJS* wrapper, uint16 methodIndex, void* mark; nsXPConnect* xpc = nsXPConnect::GetXPConnect(); JSBool foundDependentParam; + AutoPushCompatibleJSContext autoContext(mRuntime->GetJSRuntime()); + JSContext* cx = autoContext.GetJSContext(); + XPCContext* xpcc; + + if(cx && xpc) + xpcc = nsXPConnect::GetContext(cx, xpc); + else + xpcc = nsnull; + + SET_CALLER_NATIVE(xpcc); #ifdef DEBUG_stats_jband static int count = 0; @@ -494,11 +503,11 @@ nsXPCWrappedJSClass::CallMethod(nsXPCWrappedJS* wrapper, uint16 methodIndex, if(cx) older = JS_SetErrorReporter(cx, xpcWrappedJSErrorReporter); - if(!xpc || !mXPCContext || !cx || !IsReflectable(methodIndex)) + if(!xpc || !cx || !xpcc || !IsReflectable(methodIndex)) goto pre_call_clean_up; - mXPCContext->SetPendingResult(pending_result); - mXPCContext->SetException(nsnull); + xpcc->SetPendingResult(pending_result); + xpcc->SetException(nsnull); xpc->SetPendingException(nsnull); // We use js_AllocStack, js_Invoke, and js_FreeStack so that the gcthings @@ -580,7 +589,7 @@ nsXPCWrappedJSClass::CallMethod(nsXPCWrappedJS* wrapper, uint16 methodIndex, if(!XPCConvert::NativeArray2JS(cx, &val, (const void**)&pv->val, datum_type, conditional_iid, - array_count, nsnull)) + array_count, obj, nsnull)) goto pre_call_clean_up; } else if(isSizedString) @@ -594,7 +603,7 @@ nsXPCWrappedJSClass::CallMethod(nsXPCWrappedJS* wrapper, uint16 methodIndex, else { if(!XPCConvert::NativeData2JS(cx, &val, &pv->val, type, - conditional_iid, nsnull)) + conditional_iid, obj, nsnull)) goto pre_call_clean_up; } if(conditional_iid) @@ -615,7 +624,7 @@ nsXPCWrappedJSClass::CallMethod(nsXPCWrappedJS* wrapper, uint16 methodIndex, if(param.IsIn()) { if(!OBJ_SET_PROPERTY(cx, out_obj, - mXPCContext->GetStringID(XPCContext::IDX_VAL_STRING), + mRuntime->GetStringID(XPCJSRuntime::IDX_VALUE), &val)) { goto pre_call_clean_up; @@ -721,13 +730,13 @@ pre_call_clean_up: } /* this one would be set by our error reporter */ - xpc_exception = mXPCContext->GetException(); + xpc_exception = xpcc->GetException(); if(xpc_exception) - mXPCContext->SetException(nsnull); + xpcc->SetException(nsnull); // get this right away in case we do something below to cause JS code // to run on this JSContext - pending_result = mXPCContext->GetPendingResult(); + pending_result = xpcc->GetPendingResult(); /* JS might throw an expection whether the reporter was called or not */ if(JS_GetPendingException(cx, &js_exception)) @@ -812,7 +821,7 @@ pre_call_clean_up: if(param.IsRetval()) val = result; else if(!OBJ_GET_PROPERTY(cx, JSVAL_TO_OBJECT(stackbase[i+2]), - mXPCContext->GetStringID(XPCContext::IDX_VAL_STRING), + mRuntime->GetStringID(XPCJSRuntime::IDX_VALUE), &val)) HANDLE_OUT_CONVERSION_FAILURE; @@ -872,7 +881,7 @@ pre_call_clean_up: if(param.IsRetval()) val = result; else if(!OBJ_GET_PROPERTY(cx, JSVAL_TO_OBJECT(stackbase[i+2]), - mXPCContext->GetStringID(XPCContext::IDX_VAL_STRING), + mRuntime->GetStringID(XPCJSRuntime::IDX_VALUE), &val)) HANDLE_OUT_CONVERSION_FAILURE; @@ -1015,9 +1024,9 @@ static JSClass WrappedJSOutArg_class = { // static JSBool -nsXPCWrappedJSClass::InitForContext(XPCContext* xpcc) +nsXPCWrappedJSClass::InitClasses(XPCContext* xpcc, JSObject* aGlobalJSObj) { - if (!JS_InitClass(xpcc->GetJSContext(), xpcc->GetGlobalObject(), + if (!JS_InitClass(xpcc->GetJSContext(), aGlobalJSObj, 0, &WrappedJSOutArg_class, 0, 0, 0, 0, 0, 0)) @@ -1039,14 +1048,9 @@ nsXPCWrappedJSClass::NewOutObject(JSContext* cx) return JS_NewObject(cx, &WrappedJSOutArg_class, nsnull, nsnull); } -void -nsXPCWrappedJSClass::XPCContextBeingDestroyed() -{ - mXPCContext = nsnull; -} NS_IMETHODIMP -nsXPCWrappedJSClass::DebugDump(int depth) +nsXPCWrappedJSClass::DebugDump(PRInt16 depth) { #ifdef DEBUG depth-- ; @@ -1075,8 +1079,7 @@ nsXPCWrappedJSClass::DebugDump(int depth) XPC_LOG_ALWAYS(("ConstantCount = %d", i)); XPC_LOG_OUTDENT(); } - XPC_LOG_ALWAYS(("mXPCContext @ %x", mXPCContext)); - XPC_LOG_ALWAYS(("JSContext @ %x", GetJSContext())); + XPC_LOG_ALWAYS(("mRuntime @ %x", mRuntime)); XPC_LOG_ALWAYS(("mDescriptors @ %x count = %d", mDescriptors, methodCount)); if(depth && mDescriptors && methodCount) { diff --git a/mozilla/js/src/xpconnect/src/xpcwrappednative.cpp b/mozilla/js/src/xpconnect/src/xpcwrappednative.cpp index a085188d619..af8ddac5903 100644 --- a/mozilla/js/src/xpconnect/src/xpcwrappednative.cpp +++ b/mozilla/js/src/xpconnect/src/xpcwrappednative.cpp @@ -44,12 +44,16 @@ nsrefcnt nsXPCWrappedNative::AddRef(void) { NS_PRECONDITION(mRoot, "bad root"); - XPCContext* xpcc; ++mRefCnt; NS_LOG_ADDREF(this, mRefCnt, "nsXPCWrappedNative", sizeof(*this)); - if(2 == mRefCnt && nsnull != (xpcc = mClass->GetXPCContext())) - JS_AddNamedRoot(xpcc->GetJSContext(), &mJSObj, - "nsXPCWrappedNative::mJSObj"); + if(2 == mRefCnt) + { + AutoPushCompatibleJSContext + autoContext(mClass->GetRuntime()->GetJSRuntime()); + JSContext* cx = autoContext.GetJSContext(); + if(cx) + JS_AddNamedRoot(cx, &mJSObj, "nsXPCWrappedNative::mJSObj"); + } return mRefCnt; } @@ -67,9 +71,9 @@ nsXPCWrappedNative::Release(void) } if(1 == mRefCnt) { - XPCContext* xpcc; - if(nsnull != (xpcc = mClass->GetXPCContext())) - JS_RemoveRoot(xpcc->GetJSContext(), &mJSObj); + XPCJSRuntime* rt = mClass->GetRuntime(); + if(rt) + JS_RemoveRootRT(rt->GetJSRuntime(), &mJSObj); } return mRefCnt; } @@ -94,13 +98,16 @@ nsXPCWrappedNative::JSObjectFinalized(JSContext *cx, JSObject *obj) // static nsXPCWrappedNative* nsXPCWrappedNative::GetNewOrUsedWrapper(XPCContext* xpcc, - nsISupports* aObj, - REFNSIID aIID, - nsresult* pErr) + nsXPCWrappedNativeScope* aScope, + JSObject* aGlobalObject, + nsISupports* aObj, + REFNSIID aIID, + nsresult* pErr) { Native2WrappedNativeMap* map; nsISupports* rootObj = nsnull; nsISupports* realObj = nsnull; + XPCJSRuntime* rt; nsXPCWrappedNative* root; nsXPCWrappedNative* wrapper = nsnull; nsXPCWrappedNativeClass* clazz = nsnull; @@ -109,8 +116,14 @@ nsXPCWrappedNative::GetNewOrUsedWrapper(XPCContext* xpcc, NS_PRECONDITION(aObj, "bad param"); SET_ERROR_CODE(NS_ERROR_FAILURE); + + if(!xpcc || !aScope || !(rt = xpcc->GetRuntime()) || !aObj) + { + NS_ASSERTION(0,"bad param"); + return nsnull; + } - map = xpcc->GetWrappedNativeMap(); + map = aScope->GetWrappedNativeMap(); if(!map) { NS_ASSERTION(map,"bad map"); @@ -125,7 +138,10 @@ nsXPCWrappedNative::GetNewOrUsedWrapper(XPCContext* xpcc, // look for the root wrapper - root = map->Find(rootObj); + { // scoped lock + nsAutoLock lock(rt->GetMapLock()); + root = map->Find(rootObj); + } if(root) { // if we already have a wrapper for this interface then we're done. @@ -173,7 +189,9 @@ nsXPCWrappedNative::GetNewOrUsedWrapper(XPCContext* xpcc, if(rootObj == realObj) { // the root will do double duty as the interface wrapper - wrapper = root = new nsXPCWrappedNative(realObj, clazz, nsnull); + wrapper = root = new nsXPCWrappedNative(xpcc, realObj, aScope, + aGlobalObject, + clazz, nsnull); if(!wrapper) goto return_wrapper; if(!wrapper->mJSObj) @@ -182,7 +200,10 @@ nsXPCWrappedNative::GetNewOrUsedWrapper(XPCContext* xpcc, goto return_wrapper; } - map->Add(root); + { // scoped lock + nsAutoLock lock(rt->GetMapLock()); + map->Add(root); + } goto return_wrapper; } else @@ -194,7 +215,8 @@ nsXPCWrappedNative::GetNewOrUsedWrapper(XPCContext* xpcc, if(!rootClazz) goto return_wrapper; - root = new nsXPCWrappedNative(rootObj, rootClazz, nsnull); + root = new nsXPCWrappedNative(xpcc, realObj, aScope, + aGlobalObject, clazz, nsnull); NS_RELEASE(rootClazz); if(!root) @@ -204,7 +226,10 @@ nsXPCWrappedNative::GetNewOrUsedWrapper(XPCContext* xpcc, NS_RELEASE(root); // sets root to nsnull goto return_wrapper; } - map->Add(root); + { // scoped lock + nsAutoLock lock(rt->GetMapLock()); + map->Add(root); + } } } @@ -214,7 +239,8 @@ nsXPCWrappedNative::GetNewOrUsedWrapper(XPCContext* xpcc, if(!wrapper) { - wrapper = new nsXPCWrappedNative(realObj, clazz, root); + wrapper = new nsXPCWrappedNative(xpcc, realObj, aScope, + aGlobalObject, clazz, root); if(!wrapper) goto return_wrapper; if(!wrapper->mJSObj) @@ -251,24 +277,32 @@ return_wrapper: #pragma warning(disable : 4355) // OK to pass "this" in member initializer #endif -nsXPCWrappedNative::nsXPCWrappedNative(nsISupports* aObj, - nsXPCWrappedNativeClass* aClass, - nsXPCWrappedNative* root) +nsXPCWrappedNative::nsXPCWrappedNative(XPCContext* xpcc, + nsISupports* aObj, + nsXPCWrappedNativeScope* aScope, + JSObject* aGlobalObject, + nsXPCWrappedNativeClass* aClass, + nsXPCWrappedNative* root) : mObj(aObj), mJSObj(nsnull), mClass(aClass), + mScope(aScope), mDynamicScriptable(nsnull), mDynamicScriptableFlags(0), mRoot(root ? root : this), mNext(nsnull), mFinalizeListener(nsnull) { + NS_PRECONDITION(xpcc, "bad object to wrap"); NS_PRECONDITION(mObj, "bad object to wrap"); NS_PRECONDITION(mClass, "bad class for wrapper"); + NS_PRECONDITION(mScope, "bad scope for wrapper"); + NS_PRECONDITION(aGlobalObject, "bad global object for wrapper"); NS_INIT_REFCNT(); NS_ADDREF_THIS(); - NS_ADDREF(aClass); - NS_ADDREF(aObj); + NS_ADDREF(mClass); + NS_ADDREF(mObj); + NS_ADDREF(mScope); #ifdef DEBUG_stats_jband static int count = 0; @@ -291,7 +325,7 @@ nsXPCWrappedNative::nsXPCWrappedNative(nsISupports* aObj, NS_ADDREF(mRoot); } - mJSObj = aClass->NewInstanceJSObject(this); + mJSObj = aClass->NewInstanceJSObject(xpcc, aGlobalObject, this); if(mJSObj) { // intentional second addref to be released when mJSObj is gc'd @@ -299,11 +333,8 @@ nsXPCWrappedNative::nsXPCWrappedNative(nsISupports* aObj, nsIXPCScriptable* ds; nsIXPCScriptable* as; - XPCContext* xpcc; - if(nsnull != (ds = GetDynamicScriptable()) && - nsnull != (as = GetArbitraryScriptable()) && - nsnull != (xpcc = GetClass()->GetXPCContext())) + nsnull != (as = GetArbitraryScriptable())) { ds->Create(xpcc->GetJSContext(), GetJSObject(), this, as); if(mRoot == this) @@ -313,14 +344,6 @@ nsXPCWrappedNative::nsXPCWrappedNative(nsISupports* aObj, } } -void -nsXPCWrappedNative::XPCContextBeingDestroyed() -{ - XPCContext* xpcc; - if(mJSObj && mClass && nsnull != (xpcc = mClass->GetXPCContext())) - JS_RemoveRoot(xpcc->GetJSContext(), &mJSObj); -} - nsXPCWrappedNative::~nsXPCWrappedNative() { NS_PRECONDITION(0 == mRefCnt, "refcounting error"); @@ -348,12 +371,12 @@ nsXPCWrappedNative::~nsXPCWrappedNative() // remove this root wrapper from the map NS_ASSERTION(!mNext, "root wrapper with non-empty chain being deleted"); nsXPCWrappedNativeClass* clazz; - XPCContext* xpcc; Native2WrappedNativeMap* map; if(nsnull != (clazz = GetClass()) && - nsnull != (xpcc = clazz->GetXPCContext()) && - nsnull != (map = xpcc->GetWrappedNativeMap())) + nsnull != (map = mScope->GetWrappedNativeMap())) { + // scoped lock + nsAutoLock lock(mClass->GetRuntime()->GetMapLock()); map->Remove(this); } } @@ -367,6 +390,7 @@ nsXPCWrappedNative::~nsXPCWrappedNative() } NS_IF_RELEASE(mObj); NS_IF_RELEASE(mClass); + NS_IF_RELEASE(mScope); } nsXPCWrappedNative* @@ -484,7 +508,7 @@ nsXPCWrappedNative::GetJSObjectPrototype(JSObject** aJSObj) } NS_IMETHODIMP -nsXPCWrappedNative::DebugDump(int depth) +nsXPCWrappedNative::DebugDump(PRInt16 depth) { #ifdef DEBUG depth-- ; @@ -498,6 +522,8 @@ nsXPCWrappedNative::DebugDump(int depth) XPC_LOG_ALWAYS(("IID number is %s", iid)); delete iid; XPC_LOG_ALWAYS(("JSObject @ %x", mJSObj)); + XPC_LOG_ALWAYS(("nsXPCWrappedNativeScope @ %x", mScope)); + XPC_LOG_ALWAYS(("nsIXPConnectFinalizeListener @ %x", mFinalizeListener)); XPC_LOG_ALWAYS(("nsXPCWrappedNativeClass @ %x", mClass)); if(GetDynamicScriptable()) XPC_LOG_ALWAYS(("DynamicScriptable @ %x", GetDynamicScriptable())); @@ -522,4 +548,3 @@ nsXPCWrappedNative::DebugDump(int depth) #endif return NS_OK; } - diff --git a/mozilla/js/src/xpconnect/src/xpcwrappednativeclass.cpp b/mozilla/js/src/xpconnect/src/xpcwrappednativeclass.cpp index 82cf61879a5..e6bb0725d48 100644 --- a/mozilla/js/src/xpconnect/src/xpcwrappednativeclass.cpp +++ b/mozilla/js/src/xpconnect/src/xpcwrappednativeclass.cpp @@ -38,11 +38,9 @@ /***************************************************************************/ XPCNativeMemberDescriptor::XPCNativeMemberDescriptor() - : invokeFuncObj(nsnull), id(0), index(0), index2(0), flags(0) {} + : id(0), index(0), index2(0), argc(-1), flags(0) {} /***************************************************************************/ -const char XPC_VAL_STR[] = "value"; - extern "C" JS_IMPORT_DATA(JSObjectOps) js_ObjectOps; NS_IMPL_ISUPPORTS1(nsXPCWrappedNativeClass, nsIXPCWrappedNativeClass) @@ -55,17 +53,23 @@ nsXPCWrappedNativeClass::GetNewOrUsedClass(XPCContext* xpcc, REFNSIID aIID, nsresult* pErr) { - IID2WrappedNativeClassMap* map; nsXPCWrappedNativeClass* clazz = nsnull; + XPCJSRuntime* rt; - NS_PRECONDITION(xpcc, "bad param"); - - map = xpcc->GetWrappedNativeClassMap(); - NS_ASSERTION(map,"bad map"); + if(!xpcc || !(rt = xpcc->GetRuntime())) + { + SET_ERROR_CODE(NS_ERROR_FAILURE); + return nsnull; + } SET_ERROR_CODE(NS_OK); - clazz = map->Find(aIID); + { // scoped lock + nsAutoLock lock(rt->GetMapLock()); + IID2WrappedNativeClassMap* map = rt->GetWrappedNativeClassMap(); + clazz = map->Find(aIID); + } + if(clazz) { NS_ADDREF(clazz); @@ -115,9 +119,10 @@ nsXPCWrappedNativeClass::GetNewOrUsedClass(XPCContext* xpcc, return clazz; } -nsXPCWrappedNativeClass::nsXPCWrappedNativeClass(XPCContext* xpcc, REFNSIID aIID, +nsXPCWrappedNativeClass::nsXPCWrappedNativeClass(XPCContext* xpcc, + REFNSIID aIID, nsIInterfaceInfo* aInfo) - : mXPCContext(xpcc), + : mRuntime(xpcc->GetRuntime()), mIID(aIID), mName(nsnull), mInfo(aInfo), @@ -129,15 +134,21 @@ nsXPCWrappedNativeClass::nsXPCWrappedNativeClass(XPCContext* xpcc, REFNSIID aIID NS_INIT_REFCNT(); NS_ADDREF_THIS(); - mXPCContext->GetWrappedNativeClassMap()->Add(this); - if(!BuildMemberDescriptors()) + { // scoped lock + nsAutoLock lock(mRuntime->GetMapLock()); + mRuntime->GetWrappedNativeClassMap()->Add(this); + } + + if(!BuildMemberDescriptors(xpcc)) mMemberCount = -1; } nsXPCWrappedNativeClass::~nsXPCWrappedNativeClass() { - if(mXPCContext) - mXPCContext->GetWrappedNativeClassMap()->Remove(this); + { // scoped lock + nsAutoLock lock(mRuntime->GetMapLock()); + mRuntime->GetWrappedNativeClassMap()->Remove(this); + } DestroyMemberDescriptors(); if(mName) nsAllocator::Free(mName); @@ -145,13 +156,13 @@ nsXPCWrappedNativeClass::~nsXPCWrappedNativeClass() } JSBool -nsXPCWrappedNativeClass::BuildMemberDescriptors() +nsXPCWrappedNativeClass::BuildMemberDescriptors(XPCContext* xpcc) { int i; uint16 constCount; uint16 methodCount; uint16 totalCount; - JSContext* cx = GetJSContext(); + JSContext* cx = xpcc->GetJSContext(); if(!cx || NS_FAILED(mInfo->GetMethodCount(&methodCount))|| @@ -246,23 +257,21 @@ nsXPCWrappedNativeClass::BuildMemberDescriptors() return JS_TRUE; } +/* void nsXPCWrappedNativeClass::XPCContextBeingDestroyed() { DestroyMemberDescriptors(); mXPCContext = nsnull; } +*/ void nsXPCWrappedNativeClass::DestroyMemberDescriptors() { if(!mDescriptors) return; - JSContext* cx; - if(nsnull != (cx = GetJSContext())) - for(int i = 0; i < mMemberCount; i++) - if(mDescriptors[i].invokeFuncObj) - JS_RemoveRoot(cx, &mDescriptors[i].invokeFuncObj); + JSRuntime* rt = mRuntime->GetJSRuntime(); delete [] mDescriptors; mDescriptors = nsnull; } @@ -282,7 +291,7 @@ nsXPCWrappedNativeClass::LookupMemberByID(jsid id) const #ifdef XPC_DETECT_LEADING_UPPERCASE_ACCESS_ERRORS void -nsXPCWrappedNativeClass::HandlePossibleNameCaseError(jsid id) +nsXPCWrappedNativeClass::HandlePossibleNameCaseError(JSContext* cx, jsid id) { jsval val; JSString* oldJSStr; @@ -291,7 +300,6 @@ nsXPCWrappedNativeClass::HandlePossibleNameCaseError(jsid id) PRUnichar* newStr; jsid newID; const XPCNativeMemberDescriptor* desc; - JSContext* cx = GetJSContext(); if(!cx) return; @@ -400,7 +408,8 @@ nsXPCWrappedNativeClass::GetConstantAsJSVal(JSContext *cx, v.type = constant->GetType(); memcpy(&v.val, &mv.val, sizeof(mv.val)); - return XPCConvert::NativeData2JS(cx, vp, &v.val, v.type, nsnull, nsnull); + return XPCConvert::NativeData2JS(cx, vp, &v.val, v.type, + nsnull, nsnull, nsnull); } JSBool @@ -532,6 +541,8 @@ nsXPCWrappedNativeClass::CallWrappedMethod(JSContext* cx, NativeCallContextData ccdata; NativeCallContextData* oldccdata; nsXPCNativeCallContext* cc; + XPCJSRuntime* rt; + nsXPConnect* xpc; #ifdef DEBUG_stats_jband static int count = 0; @@ -543,10 +554,10 @@ nsXPCWrappedNativeClass::CallWrappedMethod(JSContext* cx, if(vp) *vp = JSVAL_NULL; - if(!xpcc) + if(!xpcc || !(rt = xpcc->GetRuntime()) || !(xpc = rt->GetXPConnect())) goto done; - xpcc->GetXPConnect()->SetPendingException(nsnull); + xpc->SetPendingException(nsnull); xpcc->SetLastResult(NS_ERROR_UNEXPECTED); // make sure we have what we need... @@ -684,7 +695,7 @@ nsXPCWrappedNativeClass::CallWrappedMethod(JSContext* cx, if(!param.IsRetval() && (JSVAL_IS_PRIMITIVE(argv[i]) || !OBJ_GET_PROPERTY(cx, JSVAL_TO_OBJECT(argv[i]), - xpcc->GetStringID(XPCContext::IDX_VAL_STRING), + rt->GetStringID(XPCJSRuntime::IDX_VALUE), &src))) { ThrowBadParamException(NS_ERROR_XPC_NEED_OUT_OBJECT, @@ -793,7 +804,7 @@ nsXPCWrappedNativeClass::CallWrappedMethod(JSContext* cx, if(!param.IsRetval() && (JSVAL_IS_PRIMITIVE(argv[i]) || !OBJ_GET_PROPERTY(cx, JSVAL_TO_OBJECT(argv[i]), - xpcc->GetStringID(XPCContext::IDX_VAL_STRING), &src))) + rt->GetStringID(XPCJSRuntime::IDX_VALUE), &src))) { ThrowBadParamException(NS_ERROR_XPC_NEED_OUT_OBJECT, cx, desc, i); @@ -954,7 +965,8 @@ nsXPCWrappedNativeClass::CallWrappedMethod(JSContext* cx, { if(!XPCConvert::NativeArray2JS(cx, &v, (const void**)&dp->val, datum_type, conditional_iid, - array_count, &err)) + array_count, wrapper->GetJSObject(), + &err)) { // XXX need exception scheme for arrays to indicate bad element ThrowBadParamException(err, cx, desc, i); @@ -975,7 +987,8 @@ nsXPCWrappedNativeClass::CallWrappedMethod(JSContext* cx, else { if(!XPCConvert::NativeData2JS(cx, &v, &dp->val, datum_type, - conditional_iid, &err)) + conditional_iid, + wrapper->GetJSObject(), &err)) { ThrowBadParamException(err, cx, desc, i); goto done; @@ -992,7 +1005,7 @@ nsXPCWrappedNativeClass::CallWrappedMethod(JSContext* cx, // we actually assured this before doing the invoke NS_ASSERTION(JSVAL_IS_OBJECT(argv[i]), "out var is not object"); if(!OBJ_SET_PROPERTY(cx, JSVAL_TO_OBJECT(argv[i]), - xpcc->GetStringID(XPCContext::IDX_VAL_STRING), &v)) + rt->GetStringID(XPCJSRuntime::IDX_VALUE), &v)) { ThrowBadParamException(NS_ERROR_XPC_CANT_SET_OUT_VAL, cx, desc, i); @@ -1072,45 +1085,34 @@ done: } JSObject* -nsXPCWrappedNativeClass::GetInvokeFunObj(const XPCNativeMemberDescriptor* desc) +nsXPCWrappedNativeClass::NewFunObj(JSContext *cx, JSObject *obj, + const XPCNativeMemberDescriptor* desc) { - NS_ASSERTION(desc->IsMethod(), "only methods have invoke objects"); + NS_ASSERTION(desc->IsMethod(), "we can only create FunObjs for methods"); - if(!desc->invokeFuncObj) + if(-1 == desc->argc) { - const char* name = GetMemberName(desc); - NS_ASSERTION(name,"bad method name"); - - JSContext* cx = GetJSContext(); - - if(!cx) - return nsnull; - const nsXPTMethodInfo* info; - uint8 requiredArgs = 0; - if(NS_SUCCEEDED(mInfo->GetMethodInfo(desc->index, &info))) { // XXX ASSUMES that retval is last arg. uint8 paramCount = info->GetParamCount(); - requiredArgs = paramCount - + XPCNativeMemberDescriptor* descRW = + NS_CONST_CAST(XPCNativeMemberDescriptor*,desc); + descRW->argc = ((intN)paramCount) - (paramCount && info->GetParam(paramCount-1).IsRetval() ? 1 : 0); } - - JSFunction *fun = JS_NewFunction(cx, WrappedNative_CallMethod, - (uintN) requiredArgs, - JSFUN_BOUND_METHOD, nsnull, name); - if(!fun) + else return nsnull; - - XPCNativeMemberDescriptor* descRW = - NS_CONST_CAST(XPCNativeMemberDescriptor*,desc); - - if(nsnull != (descRW->invokeFuncObj = JS_GetFunctionObject(fun))) - JS_AddNamedRoot(cx, &descRW->invokeFuncObj, - "XPCNativeMemberDescriptor::invokeFuncObj"); } - return desc->invokeFuncObj; + + JSFunction *fun = JS_NewFunction(cx, WrappedNative_CallMethod, + (uintN) desc->argc, + JSFUN_BOUND_METHOD, obj, + GetMemberName(desc)); + if(!fun) + return nsnull; + return JS_GetFunctionObject(fun); } struct EnumStateHolder @@ -1243,30 +1245,16 @@ nsXPCWrappedNativeClass::StaticEnumerate(nsXPCWrappedNative* wrapper, } } -// static -JSBool -nsXPCWrappedNativeClass::OneTimeInit() -{ - return xpc_WrappedNativeJSOpsOneTimeInit(); -} - -// static -JSBool -nsXPCWrappedNativeClass::InitForContext(XPCContext* xpcc) -{ - return JS_TRUE; -} - JSObject* -nsXPCWrappedNativeClass::NewInstanceJSObject(nsXPCWrappedNative* self) +nsXPCWrappedNativeClass::NewInstanceJSObject(XPCContext* xpcc, + JSObject* aGlobalObject, + nsXPCWrappedNative* self) { - JSContext* cx = GetJSContext(); - if(!cx) - return nsnull; + JSContext* cx = xpcc->GetJSContext(); JSClass* jsclazz = self->GetDynamicScriptable() ? &WrappedNativeWithCall_class : &WrappedNative_class; - JSObject* jsobj = JS_NewObject(cx, jsclazz, nsnull, JS_GetGlobalObject(cx)); + JSObject* jsobj = JS_NewObject(cx, jsclazz, nsnull, aGlobalObject); if(!jsobj || !JS_SetPrivate(cx, jsobj, self)) return nsnull; // wrapper is responsible for calling DynamicScriptable->Create @@ -1289,7 +1277,7 @@ nsXPCWrappedNativeClass::GetWrappedNativeOfJSObject(JSContext* cx, /***************************************************************************/ NS_IMETHODIMP -nsXPCWrappedNativeClass::DebugDump(int depth) +nsXPCWrappedNativeClass::DebugDump(PRInt16 depth) { #ifdef DEBUG depth-- ; @@ -1313,8 +1301,7 @@ nsXPCWrappedNativeClass::DebugDump(int depth) XPC_LOG_ALWAYS(("ConstantCount = %d", i)); XPC_LOG_OUTDENT(); } - XPC_LOG_ALWAYS(("mXPCContext @ %x", mXPCContext)); - XPC_LOG_ALWAYS(("JSContext @ %x", GetJSContext())); + XPC_LOG_ALWAYS(("mRuntime @ %x", mRuntime)); XPC_LOG_ALWAYS(("mDescriptors @ %x count = %d", mDescriptors, mMemberCount)); if(depth && mDescriptors) { @@ -1339,7 +1326,10 @@ nsXPCWrappedNativeClass::DebugDump(int depth) XPC_LOG_INDENT(); jsval idval; const char *name; - if (JS_IdToValue(GetJSContext(), desc.id, &idval) && + AutoPushCompatibleJSContext + autoCX(mRuntime->GetJSRuntime()); + JSContext* cx = autoCX.GetJSContext(); + if (cx && JS_IdToValue(cx, desc.id, &idval) && JSVAL_IS_STRING(idval) && (name = JS_GetStringBytes( JSVAL_TO_STRING(idval))) != nsnull) @@ -1350,7 +1340,7 @@ nsXPCWrappedNativeClass::DebugDump(int depth) } XPC_LOG_ALWAYS(("index is %d", desc.index)); XPC_LOG_ALWAYS(("index2 is %d", desc.index2)); - XPC_LOG_ALWAYS(("invokeFuncObj @ %x", desc.invokeFuncObj)); + XPC_LOG_ALWAYS(("argc is %d", desc.argc)); XPC_LOG_OUTDENT(); depth++; } @@ -1363,4 +1353,3 @@ nsXPCWrappedNativeClass::DebugDump(int depth) #endif return NS_OK; } - diff --git a/mozilla/js/src/xpconnect/src/xpcwrappednativejsops.cpp b/mozilla/js/src/xpconnect/src/xpcwrappednativejsops.cpp index 6a3e70499c9..ddcd25cf66f 100644 --- a/mozilla/js/src/xpconnect/src/xpcwrappednativejsops.cpp +++ b/mozilla/js/src/xpconnect/src/xpcwrappednativejsops.cpp @@ -114,12 +114,12 @@ WrappedNative_Convert(JSContext *cx, JSObject *obj, JSType type, jsval *vp) nsXPCWrappedNativeClass* clazz = wrapper->GetClass(); NS_ASSERTION(clazz,"wrapper without class"); - XPCContext* xpcc; + XPCJSRuntime* rt; const XPCNativeMemberDescriptor* desc; - if(nsnull != (xpcc = clazz->GetXPCContext()) && + if(nsnull != (rt = clazz->GetRuntime()) && nsnull != (desc = clazz->LookupMemberByID( - xpcc->GetStringID(XPCContext::IDX_TO_STRING))) && + rt->GetStringID(XPCJSRuntime::IDX_TO_STRING))) && desc->IsMethod()) { if(!clazz->CallWrappedMethod(cx, wrapper, desc, @@ -182,7 +182,7 @@ WrappedNative_CallMethod(JSContext *cx, JSObject *obj, const XPCNativeMemberDescriptor* desc = clazz->LookupMemberByID(id); if(!desc || !desc->IsMethod()) { - HANDLE_POSSIBLE_NAME_CASE_ERROR(clazz,id); + HANDLE_POSSIBLE_NAME_CASE_ERROR(cx, clazz, id); return JS_FALSE; } @@ -201,8 +201,8 @@ WrappedNative_GetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp) wrapper = (nsXPCWrappedNative*) JS_GetPrivate(cx, obj); if(!wrapper) { - XPCContext* xpcc = nsXPConnect::GetContext(cx); - if(xpcc && id == xpcc->GetStringID(XPCContext::IDX_CONSTRUCTOR)) + XPCJSRuntime* rt = nsXPConnect::GetRuntime(); + if(rt && id == rt->GetStringID(XPCJSRuntime::IDX_CONSTRUCTOR)) { // silently fail when looking for constructor property *vp = JSVAL_VOID; @@ -225,13 +225,7 @@ WrappedNative_GetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp) } else if(desc->IsMethod()) { - // allow for lazy creation of 'prototypical' function invoke object - JSObject* invokeFunObj = clazz->GetInvokeFunObj(desc); - if(!invokeFunObj) - return JS_FALSE; - // Create a function object with this wrapper as its parent, so that - // JSFUN_BOUND_METHOD binds it as the default 'this' for the function. - JSObject *funobj = JS_CloneFunctionObject(cx, invokeFunObj, obj); + JSObject* funobj = clazz->NewFunObj(cx, obj, desc); if (!funobj) return JS_FALSE; *vp = OBJECT_TO_JSVAL(funobj); @@ -254,7 +248,7 @@ WrappedNative_GetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp) } else { - HANDLE_POSSIBLE_NAME_CASE_ERROR(clazz,id); + HANDLE_POSSIBLE_NAME_CASE_ERROR(cx, clazz, id); } // XXX silently fail when property not found or call fails? @@ -299,7 +293,7 @@ WrappedNative_SetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp) } else { - HANDLE_POSSIBLE_NAME_CASE_ERROR(clazz,id); + HANDLE_POSSIBLE_NAME_CASE_ERROR(cx, clazz, id); } // fail silently return JS_TRUE; @@ -339,7 +333,7 @@ WrappedNative_LookupProperty(JSContext *cx, JSObject *obj, jsid id, } else { - HANDLE_POSSIBLE_NAME_CASE_ERROR(clazz,id); + HANDLE_POSSIBLE_NAME_CASE_ERROR(cx, clazz, id); } } @@ -643,7 +637,7 @@ JS_STATIC_DLL_CALLBACK(void) WrappedNative_Finalize(JSContext *cx, JSObject *obj) { AUTO_PUSH_JSCONTEXT(cx); - // we don't want to be setting this in finalization. + // XXX we don't want to be setting this in finalization. RIGHT???? // SET_CALLER_JAVASCRIPT(cx); nsXPCWrappedNative* wrapper = (nsXPCWrappedNative*) JS_GetPrivate(cx,obj); if(!wrapper) @@ -721,7 +715,8 @@ WrappedNative_getWithCallObjectOps(JSContext *cx, JSClass *clazz) JSClass WrappedNative_class = { - "XPCWrappedNative", JSCLASS_HAS_PRIVATE, + "XPCWrappedNative", + JSCLASS_HAS_PRIVATE | JSCLASS_PRIVATE_IS_NSISUPPORTS, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_EnumerateStub, JS_ResolveStub, WrappedNative_Convert, @@ -736,7 +731,8 @@ JSClass WrappedNative_class = { }; JSClass WrappedNativeWithCall_class = { - "XPCWrappedNativeWithCall", JSCLASS_HAS_PRIVATE, + "XPCWrappedNativeWithCall", + JSCLASS_HAS_PRIVATE | JSCLASS_PRIVATE_IS_NSISUPPORTS, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_EnumerateStub, JS_ResolveStub, WrappedNative_Convert, @@ -750,16 +746,17 @@ JSClass WrappedNativeWithCall_class = { WrappedNative_ClassHasInstance /* hasInstance */ }; - -JSBool xpc_WrappedNativeJSOpsOneTimeInit() +JSBool xpc_InitWrappedNativeJSOps() { - WrappedNative_ops.newObjectMap = js_ObjectOps.newObjectMap; - WrappedNative_ops.destroyObjectMap = js_ObjectOps.destroyObjectMap; - WrappedNative_ops.dropProperty = js_ObjectOps.dropProperty; - - WrappedNativeWithCall_ops.newObjectMap = js_ObjectOps.newObjectMap; - WrappedNativeWithCall_ops.destroyObjectMap = js_ObjectOps.destroyObjectMap; - WrappedNativeWithCall_ops.dropProperty = js_ObjectOps.dropProperty; + if(!WrappedNative_ops.newObjectMap) + { + WrappedNative_ops.newObjectMap = js_ObjectOps.newObjectMap; + WrappedNative_ops.destroyObjectMap = js_ObjectOps.destroyObjectMap; + WrappedNative_ops.dropProperty = js_ObjectOps.dropProperty; + WrappedNativeWithCall_ops.newObjectMap = js_ObjectOps.newObjectMap; + WrappedNativeWithCall_ops.destroyObjectMap = js_ObjectOps.destroyObjectMap; + WrappedNativeWithCall_ops.dropProperty = js_ObjectOps.dropProperty; + } return JS_TRUE; } diff --git a/mozilla/js/src/xpconnect/src/xpcwrappednativescope.cpp b/mozilla/js/src/xpconnect/src/xpcwrappednativescope.cpp new file mode 100644 index 00000000000..f206aeb0676 --- /dev/null +++ b/mozilla/js/src/xpconnect/src/xpcwrappednativescope.cpp @@ -0,0 +1,187 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape 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/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released + * March 31, 1998. + * + * The Initial Developer of the Original Code is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1999 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the + * terms of the GNU Public License (the "GPL"), in which case the + * provisions of the GPL are applicable instead of those above. + * If you wish to allow use of your version of this file only + * under the terms of the GPL and not to allow others to use your + * version of this file under the NPL, indicate your decision by + * deleting the provisions above and replace them with the notice + * and other provisions required by the GPL. If you do not delete + * the provisions above, a recipient may use your version of this + * file under either the NPL or the GPL. + */ + +/* Class used to manage the wrapped native objects within a JS scope. */ + +#include "xpcprivate.h" + +nsXPCWrappedNativeScope* nsXPCWrappedNativeScope::gScopes = nsnull; + +NS_IMPL_ISUPPORTS1(nsXPCWrappedNativeScope, nsIXPCWrappedNativeScope) + +nsXPCWrappedNativeScope::nsXPCWrappedNativeScope(XPCContext* xpcc) + : mRuntime(xpcc->GetRuntime()), + mWrappedNativeMap(Native2WrappedNativeMap::newMap(XPC_NATIVE_MAP_SIZE)), + mNext(nsnull) +{ + NS_INIT_ISUPPORTS(); + + // add ourselves to the scopes list + { // scoped lock + nsAutoLock lock(mRuntime->GetMapLock()); + mNext = gScopes; + gScopes = this; + } +} + +nsXPCWrappedNativeScope::~nsXPCWrappedNativeScope() +{ + // XXX cleanup map here! + + // remove ourselves from the scopes list + { // scoped lock + nsAutoLock lock(mRuntime->GetMapLock()); + if(gScopes == this) + gScopes = mNext; + else + { + nsXPCWrappedNativeScope* cur = gScopes; + while(cur && cur->mNext) + { + if(cur->mNext == this) + { + cur->mNext = mNext; + break; + } + cur = cur->mNext; + } + } + } +} + +// static +nsXPCWrappedNativeScope* +nsXPCWrappedNativeScope::FindInJSObjectScope(XPCContext* xpcc, JSObject* obj) +{ + jsval prop; + JSObject* compobj; + JSClass* clazz; + JSContext* cx = xpcc->GetJSContext(); + jsid id = xpcc->GetRuntime()->GetStringID(XPCJSRuntime::IDX_COMPONENTS); + nsISupports* supports; + nsresult rv; + + if(!obj) + return nsnull; + + JSObject* parent; + while(nsnull != (parent = JS_GetParent(cx, obj))) + obj = parent; + + if(!OBJ_GET_PROPERTY(cx, obj, id, &prop) || + JSVAL_IS_PRIMITIVE(prop) || + !(compobj = JSVAL_TO_OBJECT(prop))) + return nsnull; + +#ifdef JS_THREADSAFE + clazz = JS_GetClass(cx, compobj); +#else + clazz = JS_GetClass(compobj); +#endif + + if(!clazz || + !(clazz->flags & JSCLASS_HAS_PRIVATE) || + !(clazz->flags & JSCLASS_PRIVATE_IS_NSISUPPORTS) || + !(supports = (nsISupports*) JS_GetPrivate(cx, compobj))) + return nsnull; + + nsCOMPtr wrapper_iface; + rv = supports->QueryInterface(NS_GET_IID(nsIXPConnectWrappedNative), + getter_AddRefs(wrapper_iface)); + if(NS_FAILED(rv)) + return nsnull; + + // We can not safely assume that this is really one of our + // nsXPConnectWrappedNative objects. No other component in our + // universe should be creating objects that implement the + // nsIXPConnectWrappedNative interface! + + return ((nsXPCWrappedNative*)supports)->GetScope(); +} + +// static +void +nsXPCWrappedNativeScope::DebugDumpAllScopes(PRInt16 depth) +{ +#ifdef DEBUG + depth-- ; + + // get scope count. + int count = 0; + nsXPCWrappedNativeScope* cur; + for(cur = gScopes; cur; cur = cur->mNext) + count++ ; + + XPC_LOG_ALWAYS(("chain of %d nsXPCWrappedNativeScope(s)", count)); + XPC_LOG_INDENT(); + for(cur = gScopes; cur; cur = cur->mNext) + cur->DebugDump(depth); + XPC_LOG_OUTDENT(); +#endif +} + +#ifdef DEBUG +JS_STATIC_DLL_CALLBACK(intN) +WrappedNativeMapDumpEnumerator(JSHashEntry *he, intN i, void *arg) +{ + ((nsXPCWrappedNative*)he->value)->DebugDump(*(PRInt16*)arg); + return HT_ENUMERATE_NEXT; +} +#endif + +NS_IMETHODIMP +nsXPCWrappedNativeScope::DebugDump(PRInt16 depth) +{ +#ifdef DEBUG + depth-- ; + XPC_LOG_ALWAYS(("nsXPCWrappedNativeScope @ %x with mRefCnt = %d", this, mRefCnt)); + XPC_LOG_INDENT(); + XPC_LOG_ALWAYS(("mRuntime @ %x", mRuntime)); + XPC_LOG_ALWAYS(("mNext @ %x", mNext)); + + XPC_LOG_ALWAYS(("mWrappedNativeMap @ %x with %d wrappers(s)", \ + mWrappedNativeMap, \ + mWrappedNativeMap ? mWrappedNativeMap->Count() : 0)); + // iterate contexts... + if(depth && mWrappedNativeMap && mWrappedNativeMap->Count()) + { + XPC_LOG_INDENT(); + mWrappedNativeMap->Enumerate(WrappedNativeMapDumpEnumerator, &depth); + XPC_LOG_OUTDENT(); + } + XPC_LOG_OUTDENT(); +#endif + return NS_OK; +} + diff --git a/mozilla/js/src/xpconnect/tests/Makefile.in b/mozilla/js/src/xpconnect/tests/Makefile.in index ca68ef7a6ef..ca8305b7b05 100644 --- a/mozilla/js/src/xpconnect/tests/Makefile.in +++ b/mozilla/js/src/xpconnect/tests/Makefile.in @@ -41,7 +41,7 @@ include $(DEPTH)/config/autoconf.mk MODULE = TestXPC SIMPLE_PROGRAMS = TestXPC -DIRS = components +DIRS = idl components CPPSRCS = TestXPC.cpp @@ -53,20 +53,7 @@ LIBS = \ $(NSPR_LIBS) \ $(NULL) -TEST_FILES = \ - $(srcdir)/testxpc.js \ - $(srcdir)/xpctest_array.js \ - $(srcdir)/xpctest_echo.js \ - $(srcdir)/xpctest_ids.js \ - $(srcdir)/xpctest_overloaded.js \ - $(srcdir)/xpctest_enum_create.js \ - $(srcdir)/xpctest_primitives.js \ - $(NULL) - include $(topsrcdir)/config/rules.mk DEFINES += -DJS_THREADSAFE -export:: - $(INSTALL) $(TEST_FILES) $(DIST)/bin - diff --git a/mozilla/js/src/xpconnect/tests/TestXPC.cpp b/mozilla/js/src/xpconnect/tests/TestXPC.cpp index f2f134aa972..7a9cb982b4e 100644 --- a/mozilla/js/src/xpconnect/tests/TestXPC.cpp +++ b/mozilla/js/src/xpconnect/tests/TestXPC.cpp @@ -32,96 +32,104 @@ * file under either the NPL or the GPL. */ -/* Tests for XPConnect - hacked together while development continues. */ +/* API tests for XPConnect - use xpcshell for JS tests. */ #include #include "nsIXPConnect.h" -#include "nsIXPCScriptable.h" -#include "nsIInterfaceInfo.h" -#include "nsIInterfaceInfoManager.h" -#include "nsIXPCScriptable.h" -#include "nsIXPCSecurityManager.h" #include "nsIServiceManager.h" #include "nsIComponentManager.h" -#include "nsIEnumerator.h" -#include "nsISupportsPrimitives.h" +#include "nsIJSContextStack.h" +#include "nsIJSRuntimeService.h" +#include "nsIAllocator.h" +#include "nsIXPCSecurityManager.h" + #include "jsapi.h" -#include "xpclog.h" -#include "nscore.h" +#include "jsgc.h" // for js_ForceGC #include "xpctest.h" -#include "nsIAllocator.h" -#include "nsIGenericFactory.h" -#include "nsSpecialSystemDirectory.h" // For exe dir - -#include "nsIJSContextStack.h" -#include "nsIJSRuntimeService.h" - -static NS_DEFINE_CID(kComponentManagerCID, NS_COMPONENTMANAGER_CID); -static NS_DEFINE_CID(kGenericFactoryCID, NS_GENERICFACTORY_CID); -static NS_DEFINE_IID(kIAllocatorIID, NS_IALLOCATOR_IID); -static NS_DEFINE_IID(kAllocatorCID, NS_ALLOCATOR_CID); +/***************************************************************************/ +// initialization stuff for the xpcom runtime static void SetupRegistry() { nsComponentManager::AutoRegister(nsIComponentManager::NS_Startup, nsnull); } - /***************************************************************************/ -class MyScriptable : public nsIXPCScriptable +// host support for jsengine + +FILE *gOutFile = NULL; +FILE *gErrFile = NULL; + +static JSBool +Print(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { - NS_DECL_ISUPPORTS - XPC_DECLARE_IXPCSCRIPTABLE - MyScriptable(); + uintN i, n; + JSString *str; + + for (i = n = 0; i < argc; i++) { + str = JS_ValueToString(cx, argv[i]); + if (!str) + return JS_FALSE; + fprintf(gOutFile, "%s%s", i ? " " : "", JS_GetStringBytes(str)); + } + n++; + if (n) + fputc('\n', gOutFile); + return JS_TRUE; +} + +static JSBool +Load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + uintN i; + JSString *str; + const char *filename; + JSScript *script; + JSBool ok; + jsval result; + + for (i = 0; i < argc; i++) { + str = JS_ValueToString(cx, argv[i]); + if (!str) + return JS_FALSE; + argv[i] = STRING_TO_JSVAL(str); + filename = JS_GetStringBytes(str); + script = JS_CompileFile(cx, obj, filename); + if (!script) + ok = JS_FALSE; + else { + ok = JS_ExecuteScript(cx, obj, script, &result); + JS_DestroyScript(cx, script); + } + if (!ok) + return JS_FALSE; + } + return JS_TRUE; +} + +static JSFunctionSpec glob_functions[] = { + {"print", Print, 0}, + {"load", Load, 1}, + {0} }; -MyScriptable::MyScriptable() +static JSClass global_class = { + "global", 0, + JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, + JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub +}; + +static void +my_ErrorReporter(JSContext *cx, const char *message, JSErrorReport *report) { - NS_INIT_REFCNT(); - NS_ADDREF_THIS(); -} - -static NS_DEFINE_IID(kMyScriptableIID, NS_IXPCSCRIPTABLE_IID); -NS_IMPL_ISUPPORTS(MyScriptable, kMyScriptableIID); - -// XPC_IMPLEMENT_FORWARD_IXPCSCRIPTABLE(MyScriptable) -XPC_IMPLEMENT_FORWARD_CREATE(MyScriptable) -XPC_IMPLEMENT_IGNORE_GETFLAGS(MyScriptable) -XPC_IMPLEMENT_FORWARD_LOOKUPPROPERTY(MyScriptable) -XPC_IMPLEMENT_FORWARD_DEFINEPROPERTY(MyScriptable) -XPC_IMPLEMENT_FORWARD_GETPROPERTY(MyScriptable) -XPC_IMPLEMENT_FORWARD_SETPROPERTY(MyScriptable) -XPC_IMPLEMENT_FORWARD_GETATTRIBUTES(MyScriptable) -XPC_IMPLEMENT_FORWARD_SETATTRIBUTES(MyScriptable) -XPC_IMPLEMENT_FORWARD_DELETEPROPERTY(MyScriptable) -// XPC_IMPLEMENT_FORWARD_DEFAULTVALUE(MyScriptable) -XPC_IMPLEMENT_FORWARD_ENUMERATE(MyScriptable) -XPC_IMPLEMENT_FORWARD_CHECKACCESS(MyScriptable) -XPC_IMPLEMENT_FORWARD_CALL(MyScriptable) -XPC_IMPLEMENT_FORWARD_CONSTRUCT(MyScriptable) -XPC_IMPLEMENT_FORWARD_HASINSTANCE(MyScriptable) -XPC_IMPLEMENT_FORWARD_FINALIZE(MyScriptable) - -NS_IMETHODIMP -MyScriptable::DefaultValue(JSContext *cx, JSObject *obj, - JSType type, jsval *vp, - nsIXPConnectWrappedNative* wrapper, - nsIXPCScriptable* arbitrary, - JSBool* retval) -{ - if(type == JSTYPE_STRING || type == JSTYPE_VOID) - { - *vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, "obj with MyScriptable")); - *retval = JS_TRUE; - return NS_OK; - } - return arbitrary->DefaultValue(cx, obj, type, vp, wrapper, NULL, retval); + printf(message); } /***************************************************************************/ +// Foo class for used with some of the tests class nsTestXPCFoo : public nsITestXPCFoo2 { @@ -133,44 +141,21 @@ class nsTestXPCFoo : public nsITestXPCFoo2 char* mFoo; }; -NS_IMETHODIMP nsTestXPCFoo::QueryInterface(REFNSIID aIID, void** aInstancePtr) -{ - if (NULL == aInstancePtr) { - return NS_ERROR_NULL_POINTER; - } - - *aInstancePtr = NULL; - - if (aIID.Equals(nsITestXPCFoo::GetIID()) || - aIID.Equals(nsITestXPCFoo2::GetIID()) || - aIID.Equals(nsCOMTypeInfo::GetIID())) { - *aInstancePtr = (void*) this; - NS_ADDREF_THIS(); - return NS_OK; - } - if (aIID.Equals(nsIXPCScriptable::GetIID())) { - *aInstancePtr = (void*) new MyScriptable(); - return NS_OK; - } - - return NS_NOINTERFACE; -} - NS_IMETHODIMP nsTestXPCFoo::Test(int p1, int p2, int* retval) { - printf("nsTestXPCFoo::Test called with p1 = %d and p2 = %d\n", p1, p2); +// printf("nsTestXPCFoo::Test called with p1 = %d and p2 = %d\n", p1, p2); *retval = p1+p2; return NS_OK; } NS_IMETHODIMP nsTestXPCFoo::Test2() { - printf("nsTestXPCFoo::Test2 called "); +// printf("nsTestXPCFoo::Test2 called "); return NS_OK; } NS_IMETHODIMP nsTestXPCFoo::GetFoo(char * *aFoo) { - printf("nsTestXPCFoo::Get called "); +// printf("nsTestXPCFoo::Get called "); if(!aFoo) return NS_ERROR_NULL_POINTER; if(mFoo) @@ -182,7 +167,7 @@ NS_IMETHODIMP nsTestXPCFoo::GetFoo(char * *aFoo) NS_IMETHODIMP nsTestXPCFoo::SetFoo(const char * aFoo) { - printf("nsTestXPCFoo::Set called "); +// printf("nsTestXPCFoo::Set called "); if(mFoo) { nsAllocator::Free(mFoo); @@ -193,8 +178,7 @@ NS_IMETHODIMP nsTestXPCFoo::SetFoo(const char * aFoo) return NS_OK; } -NS_IMPL_ADDREF(nsTestXPCFoo) -NS_IMPL_RELEASE(nsTestXPCFoo) +NS_IMPL_ISUPPORTS2(nsTestXPCFoo, nsITestXPCFoo, nsITestXPCFoo2) nsTestXPCFoo::nsTestXPCFoo() : mFoo(NULL) @@ -209,303 +193,8 @@ nsTestXPCFoo::~nsTestXPCFoo() nsAllocator::Free(mFoo); } - /***************************************************************************/ - -class MyEcho : public nsIEcho -{ -public: - NS_DECL_ISUPPORTS - NS_DECL_NSIECHO - - MyEcho(); -private: - nsIEcho* mReceiver; - nsIAllocator* mAllocator; -}; - -static NS_DEFINE_IID(kMyEchoIID, NS_IECHO_IID); -NS_IMPL_ISUPPORTS(MyEcho, kMyEchoIID); - -MyEcho::MyEcho() - : mReceiver(NULL) -{ - NS_INIT_REFCNT(); - NS_ADDREF_THIS(); - nsServiceManager::GetService(kAllocatorCID, - kIAllocatorIID, - (nsISupports **)&mAllocator); -} - -NS_IMETHODIMP MyEcho::SetReceiver(nsIEcho* aReceiver) -{ - if(mReceiver) - NS_RELEASE(mReceiver); - mReceiver = aReceiver; - if(mReceiver) - NS_ADDREF(mReceiver); - return NS_OK; -} - -NS_IMETHODIMP MyEcho::SendOneString(const char* str) -{ - if(mReceiver) - return mReceiver->SendOneString(str); - return NS_OK; -} - -NS_IMETHODIMP MyEcho::In2OutOneInt(int input, int* output) -{ - *output = input; - return NS_OK; -} - -NS_IMETHODIMP MyEcho::In2OutAddTwoInts(int input1, - int input2, - int* output1, - int* output2, - int* result) -{ - *output1 = input1; - *output2 = input2; - *result = input1+input2; - return NS_OK; -} - -NS_IMETHODIMP MyEcho::In2OutOneString(const char* input, char** output) -{ - char* p; - int len; - if(input && output && mAllocator && - (NULL != (p = (char*)mAllocator->Alloc(len=strlen(input)+1)))) - { - memcpy(p, input, len); - *output = p; - return NS_OK; - } - if(output) - *output = NULL; - return NS_ERROR_FAILURE; -} - -NS_IMETHODIMP MyEcho::SimpleCallNoEcho() -{ - return NS_OK; -} - -NS_IMETHODIMP -MyEcho::SendManyTypes(PRUint8 p1, - PRInt16 p2, - PRInt32 p3, - PRInt64 p4, - PRUint8 p5, - PRUint16 p6, - PRUint32 p7, - PRUint64 p8, - float p9, - double p10, - PRBool p11, - char p12, - PRUnichar p13, - const nsID* p14, - const char* p15, - const PRUnichar* p16) -{ - if(mReceiver) - return mReceiver->SendManyTypes(p1, p2, p3, p4, p5, p6, p7, p8, p9, - p10, p11, p12, p13, p14, p15, p16); - return NS_OK; -} - -NS_IMETHODIMP -MyEcho::SendInOutManyTypes(PRUint8* p1, - PRInt16* p2, - PRInt32* p3, - PRInt64* p4, - PRUint8* p5, - PRUint16* p6, - PRUint32* p7, - PRUint64* p8, - float* p9, - double* p10, - PRBool* p11, - char* p12, - PRUnichar* p13, - nsID** p14, - char** p15, - PRUnichar** p16) -{ - if(mReceiver) - return mReceiver->SendInOutManyTypes(p1, p2, p3, p4, p5, p6, p7, p8, p9, - p10, p11, p12, p13, p14, p15, p16); - return NS_OK; -} - -NS_IMETHODIMP -MyEcho::MethodWithNative(int p1, void* p2) -{ - return NS_OK; -} - -NS_IMETHODIMP -MyEcho::ReturnCode(int code) -{ - return (nsresult) code; -} - -NS_IMETHODIMP -MyEcho::FailInJSTest(int fail) -{ - if(mReceiver) - return mReceiver->FailInJSTest(fail); - return NS_OK; -} - -NS_IMETHODIMP -MyEcho::SharedString(const char **str) -{ - *str = "a static string"; -/* - // to do non-shared we clone the string: - char buf[] = "a static string"; - int len; - *str = (char*)mAllocator->Alloc(len=strlen(buf)+1); - memcpy(*str, buf, len); -*/ - return NS_OK; -} - -NS_IMETHODIMP -MyEcho::ReturnCode_NS_OK() -{return NS_OK;} - -NS_IMETHODIMP -MyEcho::ReturnCode_NS_ERROR_NULL_POINTER() -{return NS_ERROR_NULL_POINTER;} - -NS_IMETHODIMP -MyEcho::ReturnCode_NS_ERROR_UNEXPECTED() -{return NS_ERROR_UNEXPECTED;} - -NS_IMETHODIMP -MyEcho::ReturnCode_NS_ERROR_OUT_OF_MEMORY() -{return NS_ERROR_OUT_OF_MEMORY;} - -NS_IMETHODIMP -MyEcho::ReturnInterface(nsISupports *obj, nsISupports **_retval) -{ - if(!_retval) - return NS_ERROR_NULL_POINTER; - if(obj) - NS_ADDREF(obj); - *_retval = obj; - return NS_OK; -} - -/* nsIJSStackFrameLocation GetStack (); */ -NS_IMETHODIMP -MyEcho::GetStack(nsIJSStackFrameLocation **_retval) -{ - nsIJSStackFrameLocation* stack = nsnull; - if(!_retval) - return NS_ERROR_NULL_POINTER; - - nsresult rv; - NS_WITH_SERVICE(nsIXPConnect, xpc, nsIXPConnect::GetCID(), &rv); - if(NS_SUCCEEDED(rv)) - { - nsIJSStackFrameLocation* jsstack; - if(NS_SUCCEEDED(xpc->GetCurrentJSStack(&jsstack)) && jsstack) - { - xpc->CreateStackFrameLocation(JS_FALSE, - __FILE__, - "MyEcho::GetStack", - __LINE__, - jsstack, - &stack); - NS_RELEASE(jsstack); - } - } - - if(stack) - { - *_retval = stack; - return NS_OK; - } - return NS_ERROR_FAILURE; -} - -/* void SetReceiverReturnOldReceiver (inout nsIEcho aReceiver); */ -NS_IMETHODIMP -MyEcho::SetReceiverReturnOldReceiver(nsIEcho **aReceiver) -{ - if(!aReceiver) - return NS_ERROR_NULL_POINTER; - - nsIEcho* oldReceiver = mReceiver; - mReceiver = *aReceiver; - if(mReceiver) - NS_ADDREF(mReceiver); - - /* don't release the reference, that is the caller's problem */ - *aReceiver = oldReceiver; - return NS_OK; -} - -/* void MethodWithForwardDeclaredParam (in nsITestXPCSomeUselessThing sut); */ -NS_IMETHODIMP -MyEcho::MethodWithForwardDeclaredParam(nsITestXPCSomeUselessThing *sut) -{ - return NS_OK; -} - -/* void PseudoQueryInterface (in nsIIDRef uuid, [iid_is (uuid), retval] out nsQIResult result); */ -NS_IMETHODIMP -MyEcho::PseudoQueryInterface(const nsIID & uuid, void * *result) -{ - if(!result) - return NS_ERROR_NULL_POINTER; - if(mReceiver) - return mReceiver->PseudoQueryInterface(uuid, result); - return NS_OK; -} - -/* void DebugDumpJSStack (); */ -NS_IMETHODIMP -MyEcho::DebugDumpJSStack() -{ - nsresult rv; - NS_WITH_SERVICE(nsIXPConnect, xpc, nsIXPConnect::GetCID(), &rv); - if(NS_SUCCEEDED(rv)) - { - rv = xpc->DebugDumpJSStack(); - } - return rv; -} - -/* void printArgTypes (); */ -NS_IMETHODIMP -MyEcho::PrintArgTypes(void) -{ - return NS_ERROR_NOT_IMPLEMENTED; -} - -/* void throwArg (); */ -NS_IMETHODIMP -MyEcho::ThrowArg(void) -{ - return NS_ERROR_NOT_IMPLEMENTED; -} - -/* void callReceiverSometimeLater (); */ -NS_IMETHODIMP -MyEcho::CallReceiverSometimeLater(void) -{ - return NS_ERROR_NOT_IMPLEMENTED; -} - -/***************************************************************************/ -// security manager test class +// test for nsIXPCSecurityManager class MySecMan : public nsIXPCSecurityManager { @@ -643,339 +332,19 @@ MySecMan::CanSetProperty(JSContext * aJSContext, const nsIID & aIID, nsISupports } } -/***************************************************************************/ - -FILE *gOutFile = NULL; -FILE *gErrFile = NULL; - -static JSBool -Print(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - uintN i, n; - JSString *str; - - for (i = n = 0; i < argc; i++) { - str = JS_ValueToString(cx, argv[i]); - if (!str) - return JS_FALSE; - fprintf(gOutFile, "%s%s", i ? " " : "", JS_GetStringBytes(str)); - } - n++; - if (n) - fputc('\n', gOutFile); - return JS_TRUE; -} - -static JSBool -Load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - uintN i; - JSString *str; - const char *filename; - JSScript *script; - JSBool ok; - jsval result; - - for (i = 0; i < argc; i++) { - str = JS_ValueToString(cx, argv[i]); - if (!str) - return JS_FALSE; - argv[i] = STRING_TO_JSVAL(str); - filename = JS_GetStringBytes(str); - script = JS_CompileFile(cx, obj, filename); - if (!script) - ok = JS_FALSE; - else { - ok = JS_ExecuteScript(cx, obj, script, &result); - JS_DestroyScript(cx, script); - } - if (!ok) - return JS_FALSE; - } - return JS_TRUE; -} - -static JSFunctionSpec glob_functions[] = { - {"print", Print, 0}, - {"load", Load, 1}, - {0} -}; - -static JSClass global_class = { - "global", 0, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub -}; +/**********************************************/ static void -my_ErrorReporter(JSContext *cx, const char *message, JSErrorReport *report) +TestSecurityManager(JSContext* jscontext, JSObject* glob, nsIXPConnect* xpc) { - printf(message); -} - -static nsIXPConnect* GetXPConnect() -{ - nsIXPConnect* result; - - if(NS_SUCCEEDED(nsServiceManager::GetService( - nsIXPConnect::GetCID(), nsIXPConnect::GetIID(), - (nsISupports**) &result, NULL))) - return result; - return NULL; -} - -extern "C" JS_FRIEND_DATA(FILE *) js_DumpGCHeap; - -int main() -{ - JSRuntime *rt; - JSContext *jscontext; - JSObject *glob; - nsresult rv; - - gErrFile = stderr; - gOutFile = stdout; - - SetupRegistry(); - - NS_WITH_SERVICE(nsIJSRuntimeService, rtsvc, "nsJSRuntimeService", &rv); - // get the JSRuntime from the runtime svc, if possible - if (NS_FAILED(rv) || - NS_FAILED(rtsvc->GetRuntime(&rt))) { - rtsvc = NULL; - rt = JS_NewRuntime(8L * 1024L * 1024L); - } - if (!rt) - return 1; - jscontext = JS_NewContext(rt, 8192); - if (!jscontext) - return 1; - - JS_SetErrorReporter(jscontext, my_ErrorReporter); - - nsIXPConnect* xpc = GetXPConnect(); - if(!xpc) - { - printf("XPC_GetXPConnect() returned NULL!\n"); - return 1; - } - - NS_WITH_SERVICE(nsIJSContextStack, cxstack, "nsThreadJSContextStack", &rv); - if(NS_FAILED(rv)) - { - printf("failed to get the nsThreadJSContextStack service!\n"); - return 1; - } - if(NS_FAILED(cxstack->Push(jscontext))) - { - printf("failed to get push the current jscontext on the nsThreadJSContextStack service!\n"); - return 1; - } - -#if 0 - - // old code where global object was plain object - glob = JS_NewObject(jscontext, &global_class, NULL, NULL); - if (!glob) - return 1; - - if (!JS_InitStandardClasses(jscontext, glob)) - return 1; - if (!JS_DefineFunctions(jscontext, glob, glob_functions)) - return 1; - - xpc->InitJSContext(jscontext, glob, JS_TRUE); - -#if 0 - nsIXPCComponents* comp = XPC_GetXPConnectComponentsObject(); - if(!comp) - { - printf("failed to create Components native object"); - return 1; - } - nsIXPConnectWrappedNative* comp_wrapper; - if(NS_FAILED(xpc->WrapNative(jscontext, comp, - nsIXPCComponents::GetIID(), &comp_wrapper))) - { - printf("failed to build wrapper for Components native object"); - return 1; - } - JSObject* comp_jsobj; - comp_wrapper->GetJSObject(&comp_jsobj); - jsval comp_jsval = OBJECT_TO_JSVAL(comp_jsobj); - JS_SetProperty(jscontext, glob, "Components", &comp_jsval); - NS_RELEASE(comp_wrapper); - NS_RELEASE(comp); -#endif - - char* txt[] = { - "load('simpletest.js');", - 0, - }; - - jsval rval; - for(char** p = txt; *p; p++) - JS_EvaluateScript(jscontext, glob, *p, strlen(*p), "builtin", 1, &rval); - -// XPC_DUMP(xpc, 20); - -#else - - nsTestXPCFoo* foo = new nsTestXPCFoo(); - -// nsXPCVarient v[2]; -// v[0].type = nsXPCType::T_I32; v[0].val.i32 = 1; -// v[1].type = nsXPCType::T_I32; v[1].val.i32 = 2; - -// XPC_TestInvoke(foo, 3, 2, v); -// XPC_TestInvoke(foo, 4, 0, NULL); - - nsIXPConnectWrappedNative* wrapper; - nsIXPConnectWrappedNative* wrapper2; - nsIXPConnectWrappedNative* wrapper3; - - - nsIXPConnectWrappedNative* fool_wrapper = NULL; - -/* - if(NS_SUCCEEDED(xpc->WrapNative(jscontext, foo, nsITestXPCFoo::GetIID(), &wrapper))) -*/ - // new code where global object is a wrapped xpcom object - if(NS_SUCCEEDED(xpc->InitJSContextWithNewWrappedGlobal( - jscontext, foo, nsITestXPCFoo::GetIID(), JS_TRUE, &wrapper))) - { - wrapper->GetJSObject(&glob); - JS_DefineFunctions(jscontext, glob, glob_functions); - -#if 0 - nsIXPCComponents* comp = XPC_GetXPConnectComponentsObject(); - if(!comp) - { - printf("failed to create Components native object"); - return 1; - } - nsIXPConnectWrappedNative* comp_wrapper; - if(NS_FAILED(xpc->WrapNative(jscontext, comp, - nsIXPCComponents::GetIID(), &comp_wrapper))) - { - printf("failed to build wrapper for Components native object"); - return 1; - } - JSObject* comp_jsobj; - comp_wrapper->GetJSObject(&comp_jsobj); - jsval comp_jsval = OBJECT_TO_JSVAL(comp_jsobj); - JS_SetProperty(jscontext, glob, "Components", &comp_jsval); - NS_RELEASE(comp_wrapper); - NS_RELEASE(comp); -#endif - - nsTestXPCFoo* fool = new nsTestXPCFoo(); - xpc->WrapNative(jscontext, fool, nsITestXPCFoo2::GetIID(), &fool_wrapper); - - if(NS_SUCCEEDED(xpc->WrapNative(jscontext, foo, nsITestXPCFoo2::GetIID(), &wrapper2))) - { - JSObject* js_obj; - nsISupports* com_obj; - jsval rval; - - wrapper2->GetJSObject(&js_obj); - wrapper2->GetNative(&com_obj); - - jsval v; - v = OBJECT_TO_JSVAL(js_obj); - JS_SetProperty(jscontext, glob, "foo", &v); - - // add the reflected native echo object (sans error checking :) - nsIXPConnectWrappedNative* echo_wrapper; - JSObject* echo_jsobj; - jsval echo_jsval; - MyEcho* myEcho = new MyEcho(); - xpc->WrapNative(jscontext, myEcho, nsIEcho::GetIID(), &echo_wrapper); - echo_wrapper->GetJSObject(&echo_jsobj); - echo_jsval = OBJECT_TO_JSVAL(echo_jsobj); - JS_SetProperty(jscontext, glob, "echo", &echo_jsval); - - char* txt[] = { - "load('testxpc.js');", - 0, - }; - - for(char** p = txt; *p; p++) - JS_EvaluateScript(jscontext, glob, *p, strlen(*p), "builtin", 1, &rval); - - if(JS_GetProperty(jscontext, glob, "bar", &v) && JSVAL_IS_OBJECT(v)) - { -// JSObject* bar = JSVAL_TO_OBJECT(v); - nsISupports* wrapper4; - if(NS_SUCCEEDED(xpc->WrapJS(jscontext, - JSVAL_TO_OBJECT(v), - nsITestXPCFoo::GetIID(), &wrapper4))) - { - nsITestXPCFoo* ptr = (nsITestXPCFoo*)wrapper4; - int result; - JSObject* test_js_obj; - ptr->Test(11, 13, &result); - printf("call to ptr->Test result: %s\n", - result == 24 ? "passed" : "FAILED"); - - nsIXPConnectWrappedJSMethods* methods; - - wrapper4->QueryInterface(nsIXPConnectWrappedJSMethods::GetIID(), - (void**) &methods); - methods->GetJSObject(&test_js_obj); - - printf("call to methods->GetJSObject() : %s\n", - test_js_obj == JSVAL_TO_OBJECT(v) ? - "passed" : "FAILED" ); - - char some_string[] = "some string here"; - char* answer = NULL; -// ptr->GetFoo(&answer); -// printf("Foo : %s\n", answer); - ptr->SetFoo(some_string); - ptr->GetFoo(&answer); - printf("set/get property : %s\n", - 0 == strcmp(some_string, answer) ? - "passed" : "FALIED"); - - if(answer) - nsAllocator::Free(answer); - - // dump to log test... -// XPC_DUMP(xpc, 50); - - NS_RELEASE(methods); - NS_RELEASE(wrapper4); - - } - } - NS_RELEASE(com_obj); - NS_RELEASE(wrapper2); - NS_RELEASE(echo_wrapper); - NS_RELEASE(myEcho); - } -// NS_RELEASE(wrapper); - } - - // XXX things are still rooted to the global object in the test scripts... - - // dump to log test... -// XPC_LOG_ALWAYS(("")); -// XPC_LOG_ALWAYS(("after running release object...")); -// XPC_LOG_ALWAYS(("")); -// XPC_DUMP(xpc, 3); - - - { - // SecurityManager tests... - char* t; jsval rval; JSBool success = JS_TRUE; MySecMan* sm = new MySecMan(); - nsTestXPCFoo* foo3 = new nsTestXPCFoo(); + nsTestXPCFoo* foo = new nsTestXPCFoo(); + nsIXPConnectWrappedNative* wrapper; - if(!sm || ! foo3) + if(!sm || ! foo) { success = JS_FALSE; printf("failed to create object!\n"); @@ -993,6 +362,44 @@ int main() goto sm_test_done; } + printf(" build wrapper with veto: TEST NOT RUN\n"); +/* + // This test is broken because xpconnect now detects that this is a + // call from native code and lets it succeed without calling the security manager + + sm->SetMode(MySecMan::VETO_ALL); + printf(" build wrapper with veto: "); + if(NS_SUCCEEDED(xpc->WrapNative(jscontext, glob, foo, nsITestXPCFoo2::GetIID(), &wrapper))) + { + success = JS_FALSE; + printf("failed\n"); + NS_RELEASE(wrapper); + } + else + { + printf("passed\n"); + } +*/ + sm->SetMode(MySecMan::OK_ALL); + printf(" build wrapper no veto: "); + if(NS_SUCCEEDED(xpc->WrapNative(jscontext, glob, foo, nsITestXPCFoo2::GetIID(), &wrapper))) + { + printf("passed\n"); + JSObject* obj; + if(NS_SUCCEEDED(wrapper->GetJSObject(&obj))) + { + rval = OBJECT_TO_JSVAL(obj); + JS_SetProperty(jscontext, glob, "foo", &rval); + } + + NS_RELEASE(wrapper); + } + else + { + success = JS_FALSE; + printf("failed\n"); + } + sm->SetMode(MySecMan::OK_ALL); printf(" getService no veto: "); t = "try{Components.classes.nsIXPConnect.getService(); print('passed');}catch(e){failed = true; print('failed');}"; @@ -1047,347 +454,234 @@ int main() t = "try{foo.Foo = 0; failed = true; print(' : failed');}catch(e){print(' : passed');}"; JS_EvaluateScript(jscontext, glob, t, strlen(t), "builtin", 1, &rval); - sm->SetMode(MySecMan::OK_ALL); - printf(" build wrapper no veto: "); - if(NS_SUCCEEDED(xpc->WrapNative(jscontext, foo, nsITestXPCFoo2::GetIID(), &wrapper3))) - { - printf("passed\n"); - NS_RELEASE(wrapper3); - } - else - { - success = JS_FALSE; - printf("failed\n"); - } - - sm->SetMode(MySecMan::VETO_ALL); - printf(" build wrapper with veto: "); - if(NS_SUCCEEDED(xpc->WrapNative(jscontext, foo3, nsITestXPCFoo2::GetIID(), &wrapper3))) - { - success = JS_FALSE; - printf("failed\n"); - NS_RELEASE(wrapper3); - } - else - { - printf("passed\n"); - } - sm_test_done: success = success && JS_GetProperty(jscontext, glob, "failed", &rval) && JSVAL_TRUE != rval; printf("SecurityManager tests : %s\n", success ? "passed" : "failed"); - NS_RELEASE(foo3); - } + NS_IF_RELEASE(foo); + xpc->SetSecurityManagerForJSContext(jscontext, nsnull, 0); +} +/***************************************************************************/ +// arg formatter test... + +static void +TestArgFormatter(JSContext* jscontext, JSObject* glob, nsIXPConnect* xpc) +{ + jsval* argv; + void* mark; + + nsTestXPCFoo* foo = new nsTestXPCFoo(); + const char* a_in = "some string"; + const char* b_in = "another meaningless chunck of text"; + char* a_out; + char* b_out; + + printf("ArgumentFormatter test: "); + + argv = JS_PushArguments(jscontext, &mark, "s %ip s", + a_in, &nsITestXPCFoo2::GetIID(), foo, b_in); + + if(argv) { - // arg formatter test... - - jsval* argv; - void* mark; - - const char* a_in = "some string"; - const char* b_in = "another meaningless chunck of text"; - char* a_out; - char* b_out; - - printf("ArgumentFormatter test: "); - - argv = JS_PushArguments(jscontext, &mark, "s %ip s", - a_in, &nsITestXPCFoo2::GetIID(), foo, b_in); - - if(argv) + nsISupports* fooc; + nsTestXPCFoo* foog; + if(JS_ConvertArguments(jscontext, 3, argv, "s %ip s", + &a_out, &fooc, &b_out)) { - nsISupports* fooc; - nsTestXPCFoo* foog; - if(JS_ConvertArguments(jscontext, 3, argv, "s %ip s", - &a_out, &fooc, &b_out)) + if(fooc) { - if(fooc) + if(NS_SUCCEEDED(fooc->QueryInterface(nsTestXPCFoo::GetIID(), + (void**)&foog))) { - if(NS_SUCCEEDED(fooc->QueryInterface(nsTestXPCFoo::GetIID(), - (void**)&foog))) + if(foog == foo) { - if(foog == foo) - { - if(!strcmp(a_in, a_out) && !strcmp(b_in, b_out)) - printf("passed\n"); - else - printf(" conversion OK, but surrounding was mangled -- failed!\n"); - } + if(!strcmp(a_in, a_out) && !strcmp(b_in, b_out)) + printf("passed\n"); else - printf(" JS to native returned wrong value -- failed!\n"); - NS_RELEASE(foog); + printf(" conversion OK, but surrounding was mangled -- failed!\n"); } else - { - printf(" could not QI value JS to native returned -- failed!\n"); - } - NS_RELEASE(fooc); + printf(" JS to native returned wrong value -- failed!\n"); + NS_RELEASE(foog); } else { - printf(" JS to native returned NULL -- failed!\n"); + printf(" could not QI value JS to native returned -- failed!\n"); } + NS_RELEASE(fooc); } else { - printf(" could not convert from JS to native -- failed!\n"); + printf(" JS to native returned NULL -- failed!\n"); } - JS_PopArguments(jscontext, mark); } else { - printf(" could not convert from native to JS -- failed!\n"); + printf(" could not convert from JS to native -- failed!\n"); } + JS_PopArguments(jscontext, mark); } - - + else { - // ThreadJSContextStack test + printf(" could not convert from native to JS -- failed!\n"); + } + NS_IF_RELEASE(foo); +} - printf("ThreadJSContextStack tests...\n"); +/***************************************************************************/ +// ThreadJSContextStack test - NS_WITH_SERVICE(nsIJSContextStack, stack, "nsThreadJSContextStack", &rv); +static void +TestThreadJSContextStack(JSContext* jscontext) +{ - if(NS_SUCCEEDED(rv)) - { - PRInt32 count; - PRInt32 base_count; + printf("ThreadJSContextStack tests...\n"); - if(NS_SUCCEEDED(stack->GetCount(&base_count))) - printf("\tstack->GetCount() : passed\n"); - else - printf("\tstack->GetCount() failed!\n"); + nsresult rv; + NS_WITH_SERVICE(nsIJSContextStack, stack, "nsThreadJSContextStack", &rv); - if(NS_FAILED(stack->Push(jscontext))) - printf("\tstack->Push() failed!\n"); - else - printf("\tstack->Push() passed\n"); + if(NS_SUCCEEDED(rv)) + { + PRInt32 count; + PRInt32 base_count; - if(NS_SUCCEEDED(stack->GetCount(&count))) - printf("\tstack->GetCount() : %s\n", - count == base_count+1 ? "passed" : "failed!"); - else - printf("\tstack->GetCount() failed!\n"); - - JSContext* testCX; - if(NS_FAILED(stack->Peek(&testCX))) - printf("\tstack->Peek() failed!\n"); - - if(jscontext == testCX) - printf("\tstack->Push/Peek : passed\n"); - else - printf("\tstack->Push/Peek : failed\n"); - - if(NS_FAILED(stack->Pop(&testCX))) - printf("\tstack->Pop() failed!\n"); - - if(jscontext == testCX) - printf("\tstack->Push/Pop : passed\n"); - else - printf("\tstack->Push/Pop : failed\n"); - - if(NS_SUCCEEDED(stack->GetCount(&count))) - printf("\tstack->GetCount() : %s\n", - count == base_count ? "passed" : "failed!"); - else - printf("\tstack->GetCount() failed!\n"); - } + if(NS_SUCCEEDED(stack->GetCount(&base_count))) + printf("\tstack->GetCount() : passed\n"); else - printf("\tfailed to get nsThreadJSContextStack service!\n"); + printf("\tstack->GetCount() failed!\n"); + if(NS_FAILED(stack->Push(jscontext))) + printf("\tstack->Push() failed!\n"); + else + printf("\tstack->Push() passed\n"); + + if(NS_SUCCEEDED(stack->GetCount(&count))) + printf("\tstack->GetCount() : %s\n", + count == base_count+1 ? "passed" : "failed!"); + else + printf("\tstack->GetCount() failed!\n"); + + JSContext* testCX; + if(NS_FAILED(stack->Peek(&testCX))) + printf("\tstack->Peek() failed!\n"); + + if(jscontext == testCX) + printf("\tstack->Push/Peek : passed\n"); + else + printf("\tstack->Push/Peek : failed\n"); + + if(NS_FAILED(stack->Pop(&testCX))) + printf("\tstack->Pop() failed!\n"); + + if(jscontext == testCX) + printf("\tstack->Push/Pop : passed\n"); + else + printf("\tstack->Push/Pop : failed\n"); + + if(NS_SUCCEEDED(stack->GetCount(&count))) + printf("\tstack->GetCount() : %s\n", + count == base_count ? "passed" : "failed!"); + else + printf("\tstack->GetCount() failed!\n"); } + else + printf("\tfailed to get nsThreadJSContextStack service!\n"); +} +/***************************************************************************/ +/***************************************************************************/ +// our main... - // cleanup +#define DIE(_msg) \ + PR_BEGIN_MACRO \ + printf(_msg); \ + printf("\n"); \ + return 1; \ + PR_END_MACRO - NS_RELEASE(foo); +int main() +{ + JSRuntime *rt; + JSContext *jscontext; + JSObject *glob; + nsresult rv; - if(glob) + gErrFile = stderr; + gOutFile = stdout; + + SetupRegistry(); + + // get the JSRuntime from the runtime svc, if possible + NS_WITH_SERVICE(nsIJSRuntimeService, rtsvc, "nsJSRuntimeService", &rv); + if(NS_FAILED(rv) || NS_FAILED(rtsvc->GetRuntime(&rt))) { - JS_DeleteProperty(jscontext, glob, "foo"); - JS_DeleteProperty(jscontext, glob, "echo"); - JS_DeleteProperty(jscontext, glob, "bar"); - JS_DeleteProperty(jscontext, glob, "foo2"); - JS_DeleteProperty(jscontext, glob, "baz"); - JS_DeleteProperty(jscontext, glob, "baz2"); - JS_DeleteProperty(jscontext, glob, "receiver"); - JS_SetGlobalObject(jscontext, JS_NewObject(jscontext, &global_class, NULL, NULL)); + rtsvc = NULL; + rt = JS_NewRuntime(8L * 1024L * 1024L); } - NS_RELEASE(wrapper); + if(!rt) + DIE("failed to get a JSRuntime"); - NS_RELEASE(fool_wrapper); + jscontext = JS_NewContext(rt, 8192); + if(!jscontext) + DIE("failed to create a JSContext"); -// js_DumpGCHeap = stdout; + JS_SetErrorReporter(jscontext, my_ErrorReporter); -// JS_GC(jscontext); -// printf("-----------------------\n"); -// JS_GC(jscontext); + NS_WITH_SERVICE(nsIXPConnect, xpc, nsIXPConnect::GetCID(), &rv); + if(!xpc) + DIE("failed to get xpconnect service\n"); - // dump to log test... -// XPC_LOG_ALWAYS(("")); -// XPC_LOG_ALWAYS(("after running JS_GC...")); -// XPC_LOG_ALWAYS(("")); -// XPC_DUMP(xpc, 3); + NS_WITH_SERVICE(nsIJSContextStack, cxstack, "nsThreadJSContextStack", &rv); + if(NS_FAILED(rv)) + DIE("failed to get the nsThreadJSContextStack service!\n"); -#endif + if(NS_FAILED(cxstack->Push(jscontext))) + DIE("failed to get push the current jscontext on the nsThreadJSContextStack service!\n"); -// xpc->DebugDump(3); -// printf("-----------------------\n"); - JSContext *cx; - if (NS_SUCCEEDED(cxstack->Pop(&cx))) { - NS_ASSERTION(cx == jscontext, "JS context stack push/pop mismatch"); - } - - xpc->AbandonJSContext(jscontext); + // XXX I'd like to replace this with code that uses a wrapped xpcom object + // as the global object. The old TextXPC did this. The support for this + // is not working now in the new xpconnect code. + + glob = JS_NewObject(jscontext, &global_class, NULL, NULL); + if (!glob) + DIE("failed to create global object"); + if (!JS_InitStandardClasses(jscontext, glob)) + DIE("failed to init standard classes"); + if (!JS_DefineFunctions(jscontext, glob, glob_functions)) + DIE("failed to define global functions"); + if (NS_FAILED(xpc->InitClasses(jscontext, glob))) + DIE("failed to init xpconnect classes"); + + /**********************************************/ + // run the tests... + + TestSecurityManager(jscontext, glob, xpc); + TestArgFormatter(jscontext, glob, xpc); + TestThreadJSContextStack(jscontext); + + + + /**********************************************/ + JS_ClearScope(jscontext, glob); + js_ForceGC(jscontext); + js_ForceGC(jscontext); JS_DestroyContext(jscontext); - NS_RELEASE(xpc); + xpc->SyncJSContexts(); + xpc->DebugDump(4); + cxstack = nsnull; // release service held by nsCOMPtr + xpc = nsnull; // release service held by nsCOMPtr + if (!rtsvc) { /* no runtime service, so we have to handle shutdown */ JS_DestroyRuntime(rt); JS_ShutDown(); } + rtsvc = nsnull; // release service held by nsCOMPtr -#if 0 -// a fun test... - { - NS_WITH_SERVICE(nsIComponentManager, cm, kComponentManagerCID, &rv); - if(NS_SUCCEEDED(rv)) - { - int count = 0; - nsIEnumerator* cids; - rv = cm->EnumerateCLSIDs(&cids); - if(NS_SUCCEEDED(rv)) - { - nsISupports* raw_holder; - - for(rv = cids->First(); - NS_SUCCEEDED(rv) && !cids->IsDone(); - rv = cids->Next()) - { - rv = cids->CurrentItem(&raw_holder); - if(NS_FAILED(rv)) - continue; - nsISupportsID* holder; - rv = raw_holder->QueryInterface(NS_GET_IID(nsISupportsID), - (void**) &holder); - NS_RELEASE(raw_holder); - if(NS_SUCCEEDED(rv)) - { - nsID* cid; - rv = holder->GetData(&cid); - if(NS_SUCCEEDED(rv)) - { - char* str = cid->ToString(); - if(str) - { - char* progid; - char* classname; - rv = cm->CLSIDToProgID(cid, &classname, &progid); - if(NS_SUCCEEDED(rv)) - { - printf("%s - %s - %s\n", str, progid, classname); - delete [] progid; - delete [] classname; - } - else - printf("%s\n", str); - count++; - delete [] str; - } - nsAllocator::Free(cid); - } - NS_RELEASE(holder); - } - } - NS_RELEASE(cids); - } - printf("%d CIDs found\n", count); - count = 0; - - - nsIEnumerator* progids; - rv = cm->EnumerateProgIDs(&progids); - if(NS_SUCCEEDED(rv)) - { - nsISupports* raw_holder; - - for(rv = progids->First(); - NS_SUCCEEDED(rv) && !progids->IsDone(); - rv = progids->Next()) - { - rv = progids->CurrentItem(&raw_holder); - if(NS_FAILED(rv)) - continue; - nsISupportsString* holder; - rv = raw_holder->QueryInterface(NS_GET_IID(nsISupportsString), - (void**) &holder); - NS_RELEASE(raw_holder); - if(NS_SUCCEEDED(rv)) - { - char* progid; - rv = holder->GetData(&progid); - if(NS_SUCCEEDED(rv)) - { - printf("%s\n", progid); - count++; - nsAllocator::Free(progid); - } - NS_RELEASE(holder); - } - } - NS_RELEASE(progids); - } - printf("%d Progids found\n", count); - } - } -#endif - + rv = NS_ShutdownXPCOM( NULL ); + NS_ASSERTION(NS_SUCCEEDED(rv), "NS_ShutdownXPCOM failed"); return 0; } -/***************************************************************************/ - -#include "jsatom.h" -#ifdef DEBUG -int -DumpAtom(JSHashEntry *he, int i, void *arg) -{ - FILE *fp = (FILE *)arg; - JSAtom *atom = (JSAtom *)he; - - fprintf(fp, "%3d %08x %5lu ", - i, (uintN)he->keyHash, (unsigned long)atom->number); - if (ATOM_IS_STRING(atom)) - fprintf(fp, "\"%s\"\n", ATOM_BYTES(atom)); - else if (ATOM_IS_INT(atom)) - fprintf(fp, "%ld\n", (long)ATOM_TO_INT(atom)); - else - fprintf(fp, "%.16g\n", *ATOM_TO_DOUBLE(atom)); - return HT_ENUMERATE_NEXT; -} - -int -DumpSymbol(JSHashEntry *he, int i, void *arg) -{ - FILE *fp = (FILE *)arg; - JSSymbol *sym = (JSSymbol *)he; - - fprintf(fp, "%3d %08x", i, (uintN)he->keyHash); - if (JSVAL_IS_INT(sym_id(sym))) - fprintf(fp, " [%ld]\n", (long)JSVAL_TO_INT(sym_id(sym))); - else - fprintf(fp, " \"%s\"\n", ATOM_BYTES(sym_atom(sym))); - return HT_ENUMERATE_NEXT; -} - -/* These are callable from gdb. */ -JS_BEGIN_EXTERN_C -void Dsym(JSSymbol *sym) { if (sym) DumpSymbol(&sym->entry, 0, gErrFile); } -void Datom(JSAtom *atom) { if (atom) DumpAtom(&atom->entry, 0, gErrFile); } -//void Dobj(nsISupports* p, int depth) {if(p)XPC_DUMP(p,depth);} -//void Dxpc(int depth) {Dobj(GetXPConnect(), depth);} -JS_END_EXTERN_C -#endif diff --git a/mozilla/js/src/xpconnect/tests/components/xpctest_attributes.cpp b/mozilla/js/src/xpconnect/tests/components/xpctest_attributes.cpp index 12ecd3dcf79..2e915f8f70f 100644 --- a/mozilla/js/src/xpconnect/tests/components/xpctest_attributes.cpp +++ b/mozilla/js/src/xpconnect/tests/components/xpctest_attributes.cpp @@ -55,8 +55,7 @@ class xpcTestObjectReadOnly : public nsIXPCTestObjectReadOnly { char *stringID; }; -static NS_DEFINE_IID(kxpcTestObjectReadOnlyIID, NS_IXPCTESTOBJECTREADONLY_IID); -NS_IMPL_ISUPPORTS(xpcTestObjectReadOnly, kxpcTestObjectReadOnlyIID); +NS_IMPL_ISUPPORTS1(xpcTestObjectReadOnly, nsIXPCTestObjectReadOnly); xpcTestObjectReadOnly :: xpcTestObjectReadOnly() { NS_INIT_REFCNT(); @@ -155,8 +154,7 @@ class xpcTestObjectReadWrite : public nsIXPCTestObjectReadWrite { const char *stringProperty; }; -static NS_DEFINE_IID(kxpcTestObjectReadWriteIID, NS_IXPCTESTOBJECTREADWRITE_IID); -NS_IMPL_ISUPPORTS(xpcTestObjectReadWrite, kxpcTestObjectReadWriteIID); +NS_IMPL_ISUPPORTS1(xpcTestObjectReadWrite, nsIXPCTestObjectReadWrite); xpcTestObjectReadWrite :: xpcTestObjectReadWrite() { NS_INIT_REFCNT(); @@ -265,7 +263,6 @@ private: char *name; }; -static NS_DEFINE_IID(kxpcTestAttributesIID, NS_IXPCTESTATTRIBUTES_IID); NS_IMPL_ISUPPORTS2(xpcTestAttributes, nsIXPCTestObjectReadWrite, nsIXPCTestObjectReadOnly); NS_IMETHODIMP xpcTestAttributes ::GetName(char * *aString) { diff --git a/mozilla/js/src/xpconnect/tests/components/xpctest_calljs.cpp b/mozilla/js/src/xpconnect/tests/components/xpctest_calljs.cpp index 4f3fc18d8f8..79a734d5a4d 100644 --- a/mozilla/js/src/xpconnect/tests/components/xpctest_calljs.cpp +++ b/mozilla/js/src/xpconnect/tests/components/xpctest_calljs.cpp @@ -50,14 +50,7 @@ private: }; -//static NS_DEFINE_IID( kxpcTestCallJSIID, NS_IXPCTESTCALLJS_IID ); -//NS_IMPL_ISUPPORTS(xpcTestCallJS, kxpcTestCallJSIID); - -// these methods are here since we can't call NS_IMPL_ISUPPORTS -NS_IMPL_ADDREF(xpcTestCallJS) -NS_IMPL_RELEASE(xpcTestCallJS) -// this macro is a simple way to expose nsIXPCScriptable implementation -NS_IMPL_QUERY_INTERFACE_SCRIPTABLE(xpcTestCallJS, NS_GET_IID(nsIXPCTestCallJS), this) +NS_IMPL_ISUPPORTS2(xpcTestCallJS, nsIXPCTestCallJS, nsIXPCScriptable); XPC_IMPLEMENT_FORWARD_IXPCSCRIPTABLE(xpcTestCallJS); diff --git a/mozilla/js/src/xpconnect/tests/components/xpctest_child.cpp b/mozilla/js/src/xpconnect/tests/components/xpctest_child.cpp index 3a2c9602452..ae756e198ad 100644 --- a/mozilla/js/src/xpconnect/tests/components/xpctest_child.cpp +++ b/mozilla/js/src/xpconnect/tests/components/xpctest_child.cpp @@ -60,8 +60,7 @@ public: xpctestChild(); }; -static NS_DEFINE_IID(kxpctestOtherIID, NS_IXPCTESTOTHER_IID); -NS_IMPL_ISUPPORTS(xpctestOther, kxpctestOtherIID); +NS_IMPL_ISUPPORTS1(xpctestOther, nsIXPCTestOther); xpctestOther::xpctestOther() { diff --git a/mozilla/js/src/xpconnect/tests/components/xpctest_const.cpp b/mozilla/js/src/xpconnect/tests/components/xpctest_const.cpp index dd3a2cbbcc8..9fc26b9fa76 100644 --- a/mozilla/js/src/xpconnect/tests/components/xpctest_const.cpp +++ b/mozilla/js/src/xpconnect/tests/components/xpctest_const.cpp @@ -43,8 +43,7 @@ public: xpcTestConst(); }; -static NS_DEFINE_IID( kxpcTestConstIID, NS_IXPCTESTCONST_IID ); -NS_IMPL_ISUPPORTS(xpcTestConst, kxpcTestConstIID); +NS_IMPL_ISUPPORTS1(xpcTestConst, nsIXPCTestConst); xpcTestConst :: xpcTestConst() { NS_INIT_REFCNT(); diff --git a/mozilla/js/src/xpconnect/tests/components/xpctest_echo.cpp b/mozilla/js/src/xpconnect/tests/components/xpctest_echo.cpp index 277c2b83727..06f713d1b9d 100644 --- a/mozilla/js/src/xpconnect/tests/components/xpctest_echo.cpp +++ b/mozilla/js/src/xpconnect/tests/components/xpctest_echo.cpp @@ -341,7 +341,7 @@ xpctestEcho::PrintArgTypes(void) return NS_ERROR_FAILURE; jsval* argv; - if(NS_FAILED(cc->GetArgv(&argv))) + if(NS_FAILED(cc->GetArgvPtr(&argv))) return NS_ERROR_FAILURE; printf("argv types = ["); @@ -395,7 +395,7 @@ xpctestEcho::ThrowArg(void) jsval* argv; JSContext* cx; - if(NS_FAILED(cc->GetArgv(&argv)) || + if(NS_FAILED(cc->GetArgvPtr(&argv)) || NS_FAILED(cc->GetJSContext(&cx))) return NS_ERROR_FAILURE; @@ -432,6 +432,13 @@ xpctestEcho::Notify(nsITimer *timer) NS_RELEASE(timer); } +/* readonly attribute short throwInGetter; */ +NS_IMETHODIMP +xpctestEcho::GetThrowInGetter(PRInt16 *aThrowInGetter) +{ + return NS_ERROR_FAILURE; +} + /***************************************************/ /***************************************************************************/ diff --git a/mozilla/js/src/xpconnect/tests/components/xpctest_in.cpp b/mozilla/js/src/xpconnect/tests/components/xpctest_in.cpp index e9b798289ac..475f744229a 100644 --- a/mozilla/js/src/xpconnect/tests/components/xpctest_in.cpp +++ b/mozilla/js/src/xpconnect/tests/components/xpctest_in.cpp @@ -48,8 +48,7 @@ public: xpcTestIn(); }; -static NS_DEFINE_IID( kxpcTestInIID, NS_IXPCTESTIN_IID ); -NS_IMPL_ISUPPORTS(xpcTestIn, kxpcTestInIID); +NS_IMPL_ISUPPORTS1(xpcTestIn, nsIXPCTestIn); xpcTestIn :: xpcTestIn() { NS_INIT_REFCNT(); diff --git a/mozilla/js/src/xpconnect/tests/components/xpctest_inout.cpp b/mozilla/js/src/xpconnect/tests/components/xpctest_inout.cpp index 3c65084c71b..6ac63da6b96 100644 --- a/mozilla/js/src/xpconnect/tests/components/xpctest_inout.cpp +++ b/mozilla/js/src/xpconnect/tests/components/xpctest_inout.cpp @@ -44,8 +44,7 @@ public: xpcTestInOut(); }; -static NS_DEFINE_IID( kxpcTestInOutIID, NS_IXPCTESTINOUT_IID ); -NS_IMPL_ISUPPORTS(xpcTestInOut, kxpcTestInOutIID); +NS_IMPL_ISUPPORTS1(xpcTestInOut, nsIXPCTestInOut); xpcTestInOut :: xpcTestInOut() { NS_INIT_REFCNT(); diff --git a/mozilla/js/src/xpconnect/tests/components/xpctest_module.cpp b/mozilla/js/src/xpconnect/tests/components/xpctest_module.cpp index 74c39bcc7f3..217fa4d2b4b 100644 --- a/mozilla/js/src/xpconnect/tests/components/xpctest_module.cpp +++ b/mozilla/js/src/xpconnect/tests/components/xpctest_module.cpp @@ -101,7 +101,7 @@ nsXPCTestModule::~nsXPCTestModule() Shutdown(); } -NS_IMPL_ISUPPORTS(nsXPCTestModule, NS_GET_IID(nsIModule)) +NS_IMPL_ISUPPORTS1(nsXPCTestModule, nsIModule); // Perform our one-time intialization for this module nsresult diff --git a/mozilla/js/src/xpconnect/tests/components/xpctest_multiple.cpp b/mozilla/js/src/xpconnect/tests/components/xpctest_multiple.cpp index abf872b0012..b0e83dbec7d 100644 --- a/mozilla/js/src/xpconnect/tests/components/xpctest_multiple.cpp +++ b/mozilla/js/src/xpconnect/tests/components/xpctest_multiple.cpp @@ -45,8 +45,7 @@ private: const char *name; }; -static NS_DEFINE_IID(kxpcTestParentOneIID, NS_IXPCTESTPARENTONE_IID); -NS_IMPL_ISUPPORTS(xpcTestParentOne, kxpcTestParentOneIID); +NS_IMPL_ISUPPORTS1(xpcTestParentOne, nsIXPCTestParentOne); xpcTestParentOne :: xpcTestParentOne() { @@ -110,8 +109,7 @@ private: const char *name; }; -static NS_DEFINE_IID(kxpcTestParentTwoIID, NS_IXPCTESTPARENTTWO_IID); -NS_IMPL_ISUPPORTS(xpcTestParentTwo, kxpcTestParentTwoIID); +NS_IMPL_ISUPPORTS1(xpcTestParentTwo, nsIXPCTestParentTwo); xpcTestParentTwo :: xpcTestParentTwo() { diff --git a/mozilla/js/src/xpconnect/tests/components/xpctest_out.cpp b/mozilla/js/src/xpconnect/tests/components/xpctest_out.cpp index 4cb4579df42..5d4de456ddd 100644 --- a/mozilla/js/src/xpconnect/tests/components/xpctest_out.cpp +++ b/mozilla/js/src/xpconnect/tests/components/xpctest_out.cpp @@ -72,8 +72,7 @@ private: }; -static NS_DEFINE_IID( kxpcTestOutIID, NS_IXPCTESTOUT_IID ); -NS_IMPL_ISUPPORTS(xpcTestOut, kxpcTestOutIID); +NS_IMPL_ISUPPORTS1(xpcTestOut, nsIXPCTestOut); xpcTestOut :: xpcTestOut() { NS_INIT_REFCNT(); diff --git a/mozilla/js/src/xpconnect/tests/components/xpctest_overloaded.cpp b/mozilla/js/src/xpconnect/tests/components/xpctest_overloaded.cpp index 4bc3dd57bd8..5e5a56c32fb 100644 --- a/mozilla/js/src/xpconnect/tests/components/xpctest_overloaded.cpp +++ b/mozilla/js/src/xpconnect/tests/components/xpctest_overloaded.cpp @@ -109,11 +109,7 @@ xpcoverloaded::~xpcoverloaded() // empty } -NS_IMPL_ADDREF(xpcoverloaded) -NS_IMPL_RELEASE(xpcoverloaded) -// this macro is a simple way to expose nsIXPCScriptable implementation -NS_IMPL_QUERY_INTERFACE_SCRIPTABLE(xpcoverloaded, NS_GET_IID(nsIXPCTestOverloaded), this) - +NS_IMPL_ISUPPORTS2(xpcoverloaded, nsIXPCTestOverloaded, nsIXPCScriptable); /* void Foo1 (in PRInt32 p1); */ NS_IMETHODIMP diff --git a/mozilla/js/src/xpconnect/tests/components/xpctest_string.cpp b/mozilla/js/src/xpconnect/tests/components/xpctest_string.cpp index 59ea6e2f65b..c61732b6110 100644 --- a/mozilla/js/src/xpconnect/tests/components/xpctest_string.cpp +++ b/mozilla/js/src/xpconnect/tests/components/xpctest_string.cpp @@ -56,8 +56,7 @@ xpcstringtest::~xpcstringtest() { } -static NS_DEFINE_IID(kxpcstringtestIID, NS_IXPCTESTSTRING_IID); -NS_IMPL_ISUPPORTS(xpcstringtest, kxpcstringtestIID); +NS_IMPL_ISUPPORTS1(xpcstringtest, nsIXPCTestString); /* string GetStringA (); */ NS_IMETHODIMP diff --git a/mozilla/js/src/xpconnect/tests/idl/Makefile.in b/mozilla/js/src/xpconnect/tests/idl/Makefile.in new file mode 100644 index 00000000000..2a3c0299814 --- /dev/null +++ b/mozilla/js/src/xpconnect/tests/idl/Makefile.in @@ -0,0 +1,55 @@ +# +# The contents of this file are subject to the Netscape 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/NPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is Mozilla Communicator client code, released +# March 31, 1998. +# +# The Initial Developer of the Original Code is Netscape +# Communications Corporation. Portions created by Netscape are +# Copyright (C) 1999 Netscape Communications Corporation. All +# Rights Reserved. +# +# Contributor(s): +# +# Alternatively, the contents of this file may be used under the +# terms of the GNU Public License (the "GPL"), in which case the +# provisions of the GPL are applicable instead of those above. +# If you wish to allow use of your version of this file only +# under the terms of the GPL and not to allow others to use your +# version of this file under the NPL, indicate your decision by +# deleting the provisions above and replace them with the notice +# and other provisions required by the GPL. If you do not delete +# the provisions above, a recipient may use your version of this +# file under either the NPL or the GPL. +# + +DEPTH = ../../../../.. +topsrcdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +include $(DEPTH)/config/autoconf.mk + +MODULE = xpconnect_tests + +XPIDLSRCS = \ + xpctest.idl \ + xpctest2.idl \ + xpctest_attributes.idl \ + xpctest_calljs.idl \ + xpctest_const.idl \ + xpctest_in.idl \ + xpctest_inout.idl \ + xpctest_multiple.idl \ + xpctest_out.idl \ + $(NULL) + +include $(topsrcdir)/config/rules.mk diff --git a/mozilla/js/src/xpconnect/tests/idl/makefile.win b/mozilla/js/src/xpconnect/tests/idl/makefile.win new file mode 100644 index 00000000000..65e09428fc7 --- /dev/null +++ b/mozilla/js/src/xpconnect/tests/idl/makefile.win @@ -0,0 +1,51 @@ +#!gmake +# +# The contents of this file are subject to the Netscape 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/NPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is Mozilla Communicator client code, released +# March 31, 1998. +# +# The Initial Developer of the Original Code is Netscape +# Communications Corporation. Portions created by Netscape are +# Copyright (C) 1999 Netscape Communications Corporation. All +# Rights Reserved. +# +# Contributor(s): +# +# Alternatively, the contents of this file may be used under the +# terms of the GNU Public License (the "GPL"), in which case the +# provisions of the GPL are applicable instead of those above. +# If you wish to allow use of your version of this file only +# under the terms of the GPL and not to allow others to use your +# version of this file under the NPL, indicate your decision by +# deleting the provisions above and replace them with the notice +# and other provisions required by the GPL. If you do not delete +# the provisions above, a recipient may use your version of this +# file under either the NPL or the GPL. + +DEPTH=..\..\..\..\.. + +MODULE=xpconnect_tests + +XPIDLSRCS = \ + .\xpctest.idl \ + .\xpctest2.idl \ + .\xpctest_attributes.idl \ + .\xpctest_calljs.idl \ + .\xpctest_const.idl \ + .\xpctest_in.idl \ + .\xpctest_inout.idl \ + .\xpctest_multiple.idl \ + .\xpctest_out.idl \ + $(NULL) + +include <$(DEPTH)\config\rules.mak> + diff --git a/mozilla/js/src/xpconnect/idl/xpctest.idl b/mozilla/js/src/xpconnect/tests/idl/xpctest.idl similarity index 98% rename from mozilla/js/src/xpconnect/idl/xpctest.idl rename to mozilla/js/src/xpconnect/tests/idl/xpctest.idl index 05d0681cd3d..5207ba79d7e 100644 --- a/mozilla/js/src/xpconnect/idl/xpctest.idl +++ b/mozilla/js/src/xpconnect/tests/idl/xpctest.idl @@ -126,6 +126,13 @@ interface nsIEcho : nsISupports { void throwArg(/* optional param */); void callReceiverSometimeLater(); + + readonly attribute short throwInGetter; + + const short one = 1; + const short five = 5; + const short six = 6; + }; /***************************************************************************/ diff --git a/mozilla/js/src/xpconnect/idl/xpctest2.idl b/mozilla/js/src/xpconnect/tests/idl/xpctest2.idl similarity index 100% rename from mozilla/js/src/xpconnect/idl/xpctest2.idl rename to mozilla/js/src/xpconnect/tests/idl/xpctest2.idl diff --git a/mozilla/js/src/xpconnect/idl/xpctest_attributes.idl b/mozilla/js/src/xpconnect/tests/idl/xpctest_attributes.idl similarity index 100% rename from mozilla/js/src/xpconnect/idl/xpctest_attributes.idl rename to mozilla/js/src/xpconnect/tests/idl/xpctest_attributes.idl diff --git a/mozilla/js/src/xpconnect/idl/xpctest_calljs.idl b/mozilla/js/src/xpconnect/tests/idl/xpctest_calljs.idl similarity index 100% rename from mozilla/js/src/xpconnect/idl/xpctest_calljs.idl rename to mozilla/js/src/xpconnect/tests/idl/xpctest_calljs.idl diff --git a/mozilla/js/src/xpconnect/idl/xpctest_const.idl b/mozilla/js/src/xpconnect/tests/idl/xpctest_const.idl similarity index 100% rename from mozilla/js/src/xpconnect/idl/xpctest_const.idl rename to mozilla/js/src/xpconnect/tests/idl/xpctest_const.idl diff --git a/mozilla/js/src/xpconnect/idl/xpctest_in.idl b/mozilla/js/src/xpconnect/tests/idl/xpctest_in.idl similarity index 100% rename from mozilla/js/src/xpconnect/idl/xpctest_in.idl rename to mozilla/js/src/xpconnect/tests/idl/xpctest_in.idl diff --git a/mozilla/js/src/xpconnect/idl/xpctest_inout.idl b/mozilla/js/src/xpconnect/tests/idl/xpctest_inout.idl similarity index 100% rename from mozilla/js/src/xpconnect/idl/xpctest_inout.idl rename to mozilla/js/src/xpconnect/tests/idl/xpctest_inout.idl diff --git a/mozilla/js/src/xpconnect/idl/xpctest_multiple.idl b/mozilla/js/src/xpconnect/tests/idl/xpctest_multiple.idl similarity index 100% rename from mozilla/js/src/xpconnect/idl/xpctest_multiple.idl rename to mozilla/js/src/xpconnect/tests/idl/xpctest_multiple.idl diff --git a/mozilla/js/src/xpconnect/idl/xpctest_out.idl b/mozilla/js/src/xpconnect/tests/idl/xpctest_out.idl similarity index 100% rename from mozilla/js/src/xpconnect/idl/xpctest_out.idl rename to mozilla/js/src/xpconnect/tests/idl/xpctest_out.idl diff --git a/mozilla/js/src/xpconnect/tests/js/checkid.js b/mozilla/js/src/xpconnect/tests/js/checkid.js index bf56dc409c6..60f0c233067 100644 --- a/mozilla/js/src/xpconnect/tests/js/checkid.js +++ b/mozilla/js/src/xpconnect/tests/js/checkid.js @@ -1,4 +1,4 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- * * The contents of this file are subject to the Netscape Public * License Version 1.1 (the "License"); you may not use this file diff --git a/mozilla/js/src/xpconnect/tests/js/evaluate.js b/mozilla/js/src/xpconnect/tests/js/evaluate.js index 16ba97dc4a9..84677c93e46 100644 --- a/mozilla/js/src/xpconnect/tests/js/evaluate.js +++ b/mozilla/js/src/xpconnect/tests/js/evaluate.js @@ -1,4 +1,4 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- * * The contents of this file are subject to the Netscape Public * License Version 1.1 (the "License"); you may not use this file @@ -68,75 +68,36 @@ function SetupTest() { } } + function AddTestData() { - TestEvaluate( "3", 3, false); - TestEvaluate( "undefined", undefined, false ); - TestEvaluate( - "throw -1", - undefined, - true, - null ); +var data = [ + ["3", 3, false], + ["undefined", undefined, false], + ["throw -1", undefined, true, null,true], + ["throw 'str'", undefined, true, "NS_ERROR_XPC_JS_THREW_STRING"], + ["throw {}", undefined, true, "NS_ERROR_XPC_JS_THREW_JS_OBJECT"], + ["throw 1", undefined, true, "NS_ERROR_XPC_JS_THREW_NUMBER"], + ["throw Components.results['NS_ERROR_XPC_JS_THREW_NATIVE_OBJECT']", + undefined, true, "NS_ERROR_XPC_JS_THREW_NATIVE_OBJECT"], + ["throw {message:'error message'};", + undefined, true, "NS_ERROR_XPC_JS_THREW_JS_OBJECT"], + ["throw null", undefined, true, "NS_ERROR_XPC_JS_THREW_NULL"], + ["throw new JSException('msg', 'NS_ERROR_XPC_CANT_SET_OUT_VAL', true)", + undefined, true, "NS_ERROR_XPC_CANT_SET_OUT_VAL"], + ["throw caller", undefined, true, "NS_ERROR_XPC_JS_THREW_NATIVE_OBJECT"], + ["boo", undefined, true, "NS_ERROR_XPC_JAVASCRIPT_ERROR_WITH_DETAILS"], + ["...ignore this sentinel entry..."] +]; - TestEvaluate( - "throw \'An error occurred.\'", - undefined, - true, - "NS_ERROR_XPC_JS_THREW_STRING" ); + for(var i = 0; i < data.length-1; i++) + TestEvaluate(data[i][0], + data[i][1], + data[i][2], + data[i][3], + null, + data[i][4]); - TestEvaluate( - "throw {}", - undefined, - true, - "NS_ERROR_XPC_JS_THREW_JS_OBJECT" ); - - TestEvaluate( - "throw 0", - undefined, - true, - "NS_ERROR_FAILURE" ); - - TestEvaluate( - "throw 1", - undefined, - true, - "NS_ERROR_FAILURE" ); - - TestEvaluate( - "throw Components.results['NS_ERROR_XPC_JS_THREW_NATIVE_OBJECT']", - undefined, - true, - "NS_ERROR_XPC_JAVASCRIPT_ERROR_WITH_DETAILS" ); - - TestEvaluate( - "throw {message:\"error message\"}", - undefined, - true, - "NS_ERROR_XPC_JS_THREW_JS_OBJECT" ); - - TestEvaluate( - "throw null", - undefined, - true, - "NS_ERROR_XPC_JS_THREW_NULL" ); - - TestEvaluate( - "throw new JSException( \"error message\", \"NS_ERROR_XPC_CANT_SET_OUT_VAL\", true)", - undefined, - true, - "NS_ERROR_XPC_CANT_SET_OUT_VAL"); - - TestEvaluate( - "throw caller", - undefined, - true, - "NS_ERROR_XPC_JS_THREW_NATIVE_OBJECT" ); - - TestEvaluate( - "boo", - undefined, - true, - "NS_ERROR_XPC_JAVASCRIPT_ERROR_WITH_DETAILS"); /* * second argument is the out object. should throw an exception since the @@ -153,7 +114,8 @@ if (0) { } } -function TestEvaluate (evalArg, eResult, eGotException, eExceptionName, jso ) { +function TestEvaluate (evalArg, eResult, eGotException, eExceptionName, jso, + errorHasNoName) { if ( !jso ) var jso = new JSO(); @@ -179,11 +141,17 @@ function TestEvaluate (evalArg, eResult, eGotException, eExceptionName, jso ) { "caller.Evaluate(" +evalArg+ "); jso.exception.name", eExceptionName, jso.exception.name ); - - AddTestCase( - "caller.Evaluate(" +evalArg+ "); jso.exception.result", - Components.results[eExceptionName], - jso.exception.result ); + if (errorHasNoName) { + AddTestCase( + "caller.Evaluate(" +evalArg+ "); jso.exception.result", + jso.exception.result, + jso.exception.result ); + } else { + AddTestCase( + "caller.Evaluate(" +evalArg+ "); jso.exception.result", + Components.results[eExceptionName], + jso.exception.result ); + } if ( jso.gotException ) { ERRORS_WE_GOT[ jso.exception.name ] = true; diff --git a/mozilla/js/src/xpconnect/tests/js/notscriptable.js b/mozilla/js/src/xpconnect/tests/js/notscriptable.js index c96a0a2f854..2703a877120 100644 --- a/mozilla/js/src/xpconnect/tests/js/notscriptable.js +++ b/mozilla/js/src/xpconnect/tests/js/notscriptable.js @@ -64,7 +64,7 @@ function AddTestData() { AddTestCase( "delete testObject.newProperty", - true, + false, result ); AddTestCase( @@ -87,7 +87,7 @@ function AddTestData() { result = delete testObject.newFunction; AddTestCase( "delete testObject.newFunction", - true, + false, result); AddTestCase( diff --git a/mozilla/js/src/xpconnect/tests/simpletest.js b/mozilla/js/src/xpconnect/tests/js/old/simpletest.js similarity index 77% rename from mozilla/js/src/xpconnect/tests/simpletest.js rename to mozilla/js/src/xpconnect/tests/js/old/simpletest.js index 84a9a9becca..d720fa279e0 100644 --- a/mozilla/js/src/xpconnect/tests/simpletest.js +++ b/mozilla/js/src/xpconnect/tests/js/old/simpletest.js @@ -33,14 +33,5 @@ print("identity test "+ (id1 == id2 ? "passed" : "failed")); print("non-identity test "+ (id1 != id3 ? "passed" : "failed")); print("equality test "+ (id1.equals(id2) ? "passed" : "failed")); -function nsID(str) -{ - var id = Components.classes.nsIID.createInstance(); - id = id.QueryInterface(Components.interfaces.nsIJSID); - id.init(str); - return id; -} - - var NS_ISUPPORTS_IID = new nsID("{00000000-0000-0000-c000-000000000046}"); - - print("NS_ISUPPORTS_IID = " + NS_ISUPPORTS_IID); +var NS_ISUPPORTS_IID = new Components.ID("{00000000-0000-0000-c000-000000000046}"); +print("NS_ISUPPORTS_IID = " + NS_ISUPPORTS_IID); diff --git a/mozilla/js/src/xpconnect/tests/js/old/speed.js b/mozilla/js/src/xpconnect/tests/js/old/speed.js new file mode 100644 index 00000000000..91537d522ed --- /dev/null +++ b/mozilla/js/src/xpconnect/tests/js/old/speed.js @@ -0,0 +1,60 @@ +print("......................................."); +print("simple speed tests..."); + +var iterations = 1000; + +var receiver2 = new Object(); +receiver2.SetReceiver = function() {}; +receiver2.SendOneString = function(str) {/*print(str);*/}; + +var echoJS = new Object(); +echoJS.SetReceiver = function(r) {this.r = r;}; +echoJS.SendOneString = function(str) {if(this.r)this.r.SendOneString(str)}; +echoJS.SimpleCallNoEcho = function(){} + +/*********************************************/ +/*********************************************/ + +print("\nEcho.SimpleCallNoEcho (just makes call with no params and no callback)"); +var start_time = new Date().getTime()/1000; +echoJS.SetReceiver(receiver2); +for(i = 0; i < iterations; i++) + echoJS.SimpleCallNoEcho(); +var end_time = new Date().getTime()/1000; +var interval = parseInt(100*(end_time - start_time),10)/100; +print("JS control did "+iterations+" iterations in "+interval+ " seconds."); + +/* +var start_time = new Date().getTime()/1000; +echo.SetReceiver(receiver2); +for(i = 0; i < iterations; i++) + echo.SimpleCallNoEcho(); +var end_time = new Date().getTime()/1000; +var interval = parseInt(100*(end_time - start_time),10)/100; +print("XPConnect did "+iterations+" iterations in "+interval+ " seconds."); +*/ + +/*********************************************/ + +print("\nEcho.SendOneString (calls a callback that does a call)"); +var start_time = new Date().getTime()/1000; +echoJS.SetReceiver(receiver2); +for(i = 0; i < iterations; i++) + echoJS.SendOneString("foo"); +var end_time = new Date().getTime()/1000; +var interval = parseInt(100*(end_time - start_time),10)/100; +print("JS control did "+iterations+" iterations in "+interval+ " seconds."); + +/* +var start_time = new Date().getTime()/1000; +echo.SetReceiver(receiver2); +for(i = 0; i < iterations; i++) + echo.SendOneString("foo"); +var end_time = new Date().getTime()/1000; +var interval = parseInt(100*(end_time - start_time),10)/100; +print("XPConnect did "+iterations+" iterations in "+interval+ " seconds."); +*/ + +print("......................................."); + +echoJS.SetReceiver(null); diff --git a/mozilla/js/src/xpconnect/tests/testxpc.js b/mozilla/js/src/xpconnect/tests/js/old/testxpc.js similarity index 100% rename from mozilla/js/src/xpconnect/tests/testxpc.js rename to mozilla/js/src/xpconnect/tests/js/old/testxpc.js diff --git a/mozilla/js/src/xpconnect/tests/js/old/try.js b/mozilla/js/src/xpconnect/tests/js/old/try.js new file mode 100644 index 00000000000..ca87beb3d2e --- /dev/null +++ b/mozilla/js/src/xpconnect/tests/js/old/try.js @@ -0,0 +1,27 @@ + +var name = "component://netscape/messenger/server&type=pop3"; + +try { + var foo = Components.classes[name].createInstance(); + print(foo); + print(name); + for(p in Components.interfaces) { + try { + iface = foo.QueryInterface(Components.interfaces[p]); + if(typeof(iface) == 'undefined') + continue; + print("\t"+p); + for(m in iface) { + print("\t\t"+m+" = "+typeof(iface[m])); + } + } catch(e) { + + } + } + + foo = null; + gc(); +} catch(e) { + print("caught+e"); +} + diff --git a/mozilla/js/src/xpconnect/tests/xpctest_array.js b/mozilla/js/src/xpconnect/tests/js/old/xpctest_array.js similarity index 100% rename from mozilla/js/src/xpconnect/tests/xpctest_array.js rename to mozilla/js/src/xpconnect/tests/js/old/xpctest_array.js diff --git a/mozilla/js/src/xpconnect/tests/xpctest_callcontext.js b/mozilla/js/src/xpconnect/tests/js/old/xpctest_callcontext.js similarity index 100% rename from mozilla/js/src/xpconnect/tests/xpctest_callcontext.js rename to mozilla/js/src/xpconnect/tests/js/old/xpctest_callcontext.js diff --git a/mozilla/js/src/xpconnect/tests/xpctest_echo.js b/mozilla/js/src/xpconnect/tests/js/old/xpctest_echo.js similarity index 98% rename from mozilla/js/src/xpconnect/tests/xpctest_echo.js rename to mozilla/js/src/xpconnect/tests/js/old/xpctest_echo.js index f6c07cc7e5c..51c628fe87a 100644 --- a/mozilla/js/src/xpconnect/tests/xpctest_echo.js +++ b/mozilla/js/src/xpconnect/tests/js/old/xpctest_echo.js @@ -48,15 +48,18 @@ var NS_ITESTXPC_FOO_IID = new nsID("{159E36D0-991E-11d2-AC3F-00C09300144B}"); print(); print("Components = "+Components); print("Components properties:"); + +print(Components.QueryInterface); +print(); + for(i in Components) print(" Components."+i+" = "+Components[i]); -print(); /***************************************************************************/ print("......................................."); print("echo tests..."); -var echo = new nsNativeEcho; +var echo = new nsNativeEcho(); var receiver = new Object(); receiver.SetReceiver = function() {}; @@ -439,10 +442,12 @@ for(i in this) print(); } -echoJS.SetReceiver(null); -echo.SetReceiver(null); + +if(echoJS)echoJS.SetReceiver(null); +if(echo)echo.SetReceiver(null); // cleanup... +nsNativeEcho = null; NS_ISUPPORTS_IID = null; NS_ITESTXPC_FOO_IID = null; echo = null; @@ -464,8 +469,8 @@ send_params = null; start_time = null; test_string = null; test_string2 = null; - +nsNativeEcho = null; gc(); gc(); -dumpXPC(6); +//dumpXPC(4); diff --git a/mozilla/js/src/xpconnect/tests/xpctest_enum_and_sort.js b/mozilla/js/src/xpconnect/tests/js/old/xpctest_enum_and_sort.js similarity index 100% rename from mozilla/js/src/xpconnect/tests/xpctest_enum_and_sort.js rename to mozilla/js/src/xpconnect/tests/js/old/xpctest_enum_and_sort.js diff --git a/mozilla/js/src/xpconnect/tests/xpctest_enum_constants.js b/mozilla/js/src/xpconnect/tests/js/old/xpctest_enum_constants.js similarity index 100% rename from mozilla/js/src/xpconnect/tests/xpctest_enum_constants.js rename to mozilla/js/src/xpconnect/tests/js/old/xpctest_enum_constants.js diff --git a/mozilla/js/src/xpconnect/tests/xpctest_enum_create.js b/mozilla/js/src/xpconnect/tests/js/old/xpctest_enum_create.js similarity index 100% rename from mozilla/js/src/xpconnect/tests/xpctest_enum_create.js rename to mozilla/js/src/xpconnect/tests/js/old/xpctest_enum_create.js diff --git a/mozilla/js/src/xpconnect/tests/xpctest_exceptions.js b/mozilla/js/src/xpconnect/tests/js/old/xpctest_exceptions.js similarity index 100% rename from mozilla/js/src/xpconnect/tests/xpctest_exceptions.js rename to mozilla/js/src/xpconnect/tests/js/old/xpctest_exceptions.js diff --git a/mozilla/js/src/xpconnect/tests/xpctest_ids.js b/mozilla/js/src/xpconnect/tests/js/old/xpctest_ids.js similarity index 100% rename from mozilla/js/src/xpconnect/tests/xpctest_ids.js rename to mozilla/js/src/xpconnect/tests/js/old/xpctest_ids.js diff --git a/mozilla/js/src/xpconnect/tests/xpctest_overloaded.js b/mozilla/js/src/xpconnect/tests/js/old/xpctest_overloaded.js similarity index 100% rename from mozilla/js/src/xpconnect/tests/xpctest_overloaded.js rename to mozilla/js/src/xpconnect/tests/js/old/xpctest_overloaded.js diff --git a/mozilla/js/src/xpconnect/tests/xpctest_primitives.js b/mozilla/js/src/xpconnect/tests/js/old/xpctest_primitives.js similarity index 100% rename from mozilla/js/src/xpconnect/tests/xpctest_primitives.js rename to mozilla/js/src/xpconnect/tests/js/old/xpctest_primitives.js diff --git a/mozilla/js/src/xpconnect/tests/js/readonlyattributes.js b/mozilla/js/src/xpconnect/tests/js/readonlyattributes.js index bba37821618..b22a5d2b195 100644 --- a/mozilla/js/src/xpconnect/tests/js/readonlyattributes.js +++ b/mozilla/js/src/xpconnect/tests/js/readonlyattributes.js @@ -51,19 +51,19 @@ AddTestCase( "o.boolReadOnly", true, o.boolReadOnly ); AddTestCase( "o.shortReadOnly", 32767, o.shortReadOnly ); - AddTestCase( "o.longReadOnly", 9223372036854776000, o.longReadOnly ); + AddTestCase( "o.longReadOnly", 2147483647, o.longReadOnly ); AddTestCase( "o.charReadOnly", "X", o.charReadOnly ); // read only means we can't overwrite. o.boolReadOnly = false; o.shortReadOnly = -12345; - o.longReadOnly = 1234567890; + o.longReadOnly = 12345; o.charReadOnly = "Z"; AddTestCase( "o.boolReadOnly", true, o.boolReadOnly ); AddTestCase( "o.shortReadOnly", 32767, o.shortReadOnly ); - AddTestCase( "o.longReadOnly", 9223372036854776000, o.longReadOnly ); + AddTestCase( "o.longReadOnly", 2147483647, o.longReadOnly ); AddTestCase( "o.charReadOnly", "X", o.charReadOnly ); StopTest(); \ No newline at end of file diff --git a/mozilla/js/src/xpconnect/tests/js/readwriteattributes.js b/mozilla/js/src/xpconnect/tests/js/readwriteattributes.js index 29baefb925f..3a433d01977 100644 --- a/mozilla/js/src/xpconnect/tests/js/readwriteattributes.js +++ b/mozilla/js/src/xpconnect/tests/js/readwriteattributes.js @@ -60,10 +60,10 @@ AddTestCase( "o.booleanProperty", true, o.booleanProperty ); AddTestCase( "o.shortProperty", 32767, o.shortProperty ); - AddTestCase( "o.longProperty", 9223372036854776000, o.longProperty ); + AddTestCase( "o.longProperty", 2147483647, o.longProperty ); AddTestCase( "o.charProperty", "X", o.charProperty ); - // read only means we can't overwrite. + // these we can overwrite o.booleanProperty = false; o.shortProperty = -12345; diff --git a/mozilla/js/src/xpconnect/tests/js/xpcfun.js b/mozilla/js/src/xpconnect/tests/js/xpcfun.js index eacabcd47a7..9a355872911 100644 --- a/mozilla/js/src/xpconnect/tests/js/xpcfun.js +++ b/mozilla/js/src/xpconnect/tests/js/xpcfun.js @@ -18,7 +18,7 @@ * Copyright (C) 1998 Netscape Communications Corporation. All * Rights Reserved. * - * Contributor(s): + * Contributor(s): * * Alternatively, the contents of this file may be used under the * terms of the GNU Public License (the "GPL"), in which case the @@ -32,8 +32,8 @@ * file under either the NPL or the GPL. */ /** - * This file contains functions used by all of the XPConnect tests. - * See http://www.mozilla.org/scriptable/tests/ for more information. + * This file contains functions used by all of the XPConnect tests. + * See http://www.mozilla.org/scriptable/tests/ for more information. */ @@ -48,134 +48,135 @@ var PASSED; var FAILED; function AddTestCase( s, e, a, n, b, i ) { - TESTCASES[TESTCASES.length] = new TestCase( s, e, a, b, n, i ); - return TESTCASES[TESTCASES.length]; + TESTCASES[TESTCASES.length] = new TestCase( s, e, a, b, n, i ); + return TESTCASES[TESTCASES.length]; } function TestCase( s, e, a, n, b, i ) { - this.id = ID++; - this.description = s; - this.expected = e; - this.actual = a; - if ( n ) - this.negative = n; - if ( b ) - this.bugnumber = b; - if ( i ) - this.ignore = i; - this.passed = GetResult( e, a ); + this.id = ID++; + this.description = s; + this.expected = e; + this.actual = a; + if ( n ) + this.negative = n; + if ( b ) + this.bugnumber = b; + if ( i ) + this.ignore = i; + this.passed = GetResult( e, a ); } function StartTest( t ) { - TESTCASES = new Array(); - FILE_FAILED_CASES = 0; - FILE_PASSED_CASES = 0; - FILE_PASSED = true; - COMPLETED = false; - ID = 0; + TESTCASES = new Array(); + FILE_FAILED_CASES = 0; + FILE_PASSED_CASES = 0; + FILE_PASSED = true; + COMPLETED = false; + ID = 0; - FILE_TITLE = t; + FILE_TITLE = t; - WriteLine("\n" + FILE_TITLE +"\n"); + WriteLine("\n" + FILE_TITLE +"\n"); - if ( window ) { - document.open(); - PASSED = "passed "; - FAILED = "FAILED "; + if ( window ) { + document.open(); + PASSED = "passed "; + FAILED = "FAILED "; - } else { - PASSED = "passed "; - FAILED = "FAILED "; - } + } else { + PASSED = "passed "; + FAILED = "FAILED "; + } } function StopTest() { - // here, we will close up and print a summary of what happened - writeReadableResults(); - //writeParseableResults(); - writeTestFileSummary(); + // here, we will close up and print a summary of what happened + writeReadableResults(); + //writeParseableResults(); + writeTestFileSummary(); - if ( window ) { - document.close(); - } + if ( window ) { + document.close(); + } } function AddComment(s) { - WriteLine(s); + WriteLine(s); } function writeReadableResults() { - for ( var i = 0; i < TESTCASES.length; i++ ) { - var tc = TESTCASES[i]; - - WriteLine( - (tc.passed ? PASSED : FAILED) + - tc.description + " = " + - tc.actual + " " + - (tc.passed ? "" : "expected " + tc.expected) - ); - } + for ( var i = 0; i < TESTCASES.length; i++ ) { + var tc = TESTCASES[i]; + if (tc.passed && this.DONT_PRINT_PASSED_TESTS) + continue; + WriteLine( + (tc.passed ? PASSED : FAILED) + + tc.description + " = " + + tc.actual + " " + + (tc.passed ? "" : "expected " + tc.expected) + ); + } } function writeParseableResults() { - WriteLine( "START TEST CASE RESULTS" ); - for ( var i = 0; i < TESTCASES.length; i++ ) { - var tc = TESTCASES[i]; + WriteLine( "START TEST CASE RESULTS" ); + for ( var i = 0; i < TESTCASES.length; i++ ) { + var tc = TESTCASES[i]; - WriteLine( tc.id +","+ - tc.description +","+ - tc.expected +","+ - tc.actual +","+ - tc.bugnumber +","+ - tc.negative +","+ - tc.ignore +","+ - tc.exception +","+ - tc.passed ); - } + WriteLine( tc.id +","+ + tc.description +","+ + tc.expected +","+ + tc.actual +","+ + tc.bugnumber +","+ + tc.negative +","+ + tc.ignore +","+ + tc.exception +","+ + tc.passed ); + } } function writeTestFileSummary() { - WriteLine ("\nTEST FILE SUMMARY" ); + WriteLine ("\nTEST FILE SUMMARY" ); - WriteLine( "Title: " + FILE_TITLE ); - WriteLine( "Passed: " + FILE_PASSED ); - WriteLine( "Testcases: " + TESTCASES.length ); - WriteLine( "Passed Cases: " + FILE_PASSED_CASES ); - WriteLine( "Failed Cases: " + FILE_FAILED_CASES ); + WriteLine( "Title: " + FILE_TITLE ); + WriteLine( "Passed: " + FILE_PASSED ); + WriteLine( "Testcases: " + TESTCASES.length ); + WriteLine( "Passed Cases: " + FILE_PASSED_CASES ); + WriteLine( "Failed Cases: " + FILE_FAILED_CASES ); - // if we're in the shell, run the garbage collector. - var gc; - if ( typeof gc == "function") { - gc(); - } + // if we're in the shell, run the garbage collector. + var gc; + if ( typeof gc == "function") { + gc(); + } } function GetResult(expect, actual) { - if ( actual != actual ) { - if ( typeof actual == "object" ){ - actual = "NaN object"; - } else { - actual = "NaN number"; - } - } - if ( expect != expect ) { - if ( typeof expect == "object" ) { - expect = "NaN object"; - } else { - expect = "NaN number"; - } - } + if ( actual != actual ) { + if ( typeof actual == "object" ){ + actual = "NaN object"; + } else { + actual = "NaN number"; + } + } + if ( expect != expect ) { + if ( typeof expect == "object" ) { + expect = "NaN object"; + } else { + expect = "NaN number"; + } + } - var passed = ( expect == actual ) ? true : false; + var passed = ( expect == actual ) ? true : false; - if ( typeof(expect) != typeof(actual) ) { - passed = false; - } + if ( typeof(expect) != typeof(actual) ) { + passed = false; + } - if ( !passed ) { - FILE_PASSED = false; - FILE_FAILED_CASES++; - } else { - FILE_PASSED_CASES++; - } + if ( !passed ) { + FILE_PASSED = false; + FILE_FAILED_CASES++; + } else { + FILE_PASSED_CASES++; + } - return passed; + return passed; } function PrintResult(e, a, s, p) { @@ -184,43 +185,43 @@ function PrintResult(e, a, s, p) { function PrintHTMLFormattedResult( e, a, s, p ) { } function WriteLine( s ) { - if ( window ) { - document.write( s +"
"); - } else { - print ( s ); - } + if ( window ) { + document.write( s +"
"); + } else { + print ( s ); + } } function GetFailedCases() { - for ( var i = 0; i < TESTCASES.length; i++ ) { - var tc = TESTCASES[i]; + for ( var i = 0; i < TESTCASES.length; i++ ) { + var tc = TESTCASES[i]; - if ( !tc.passed ) - WriteLine( - (tc.passed ? "passed " : "FAILED! ") + - tc.description + " = " + - tc.actual + " " + - (tc.passed ? "" : "expected " + tc.expected) - ); - } + if ( !tc.passed ) + WriteLine( + (tc.passed ? "passed " : "FAILED! ") + + tc.description + " = " + + tc.actual + " " + + (tc.passed ? "" : "expected " + tc.expected) + ); + } } /** - * Given an object, display all its properties and the value of that - * property. + * Given an object, display all its properties and the value of that + * property. */ function Enumerate( o ) { - var p; - WriteLine( "Properties of object " + o ); - for ( p in o ) { - WriteLine( p +": "+ (typeof o[p] == "function" ? "function" : o[p]) ); - } + var p; + WriteLine( "Properties of object " + o ); + for ( p in o ) { + WriteLine( p +": "+ (typeof o[p] == "function" ? "function" : o[p]) ); + } } /** - * These are variables whose values depend on the host environment. - * The defaults here are correct for the JavaScript or XPConnect shell. - * In order to run the tests in the browser, need to override these - * values for the tests to execute correctly. + * These are variables whose values depend on the host environment. + * The defaults here are correct for the JavaScript or XPConnect shell. + * In order to run the tests in the browser, need to override these + * values for the tests to execute correctly. * */ diff --git a/mozilla/js/src/xpconnect/tests/makefile.win b/mozilla/js/src/xpconnect/tests/makefile.win index da0727f1943..65fda5d658f 100644 --- a/mozilla/js/src/xpconnect/tests/makefile.win +++ b/mozilla/js/src/xpconnect/tests/makefile.win @@ -35,20 +35,11 @@ DEPTH=..\..\..\.. -DIRS = components +DIRS = idl components MAKE_OBJ_TYPE = EXE PROG1 = .\$(OBJDIR)\TestXPC.exe PROGRAMS = $(PROG1) -TESTCASES = \ - testxpc.js \ - simpletest.js \ - xpctest_array.js \ - xpctest_echo.js \ - xpctest_ids.js \ - xpctest_overloaded.js \ - xpctest_enum_create.js \ - xpctest_primitives.js LCFLAGS=-DUSE_NSREG -DWIN32_LEAN_AND_MEAN -DJS_THREADSAFE -DJSFILE @@ -67,7 +58,6 @@ include <$(DEPTH)\config\rules.mak> install:: $(PROGRAMS) -for %p in ($(PROGRAMS)) do $(MAKE_INSTALL) %p $(DIST)\bin - -for %p in ($(TESTCASES)) do $(MAKE_INSTALL) %p $(DIST)\bin clobber:: -for %p in ($(PROGRAMS)) do $(RM) %p $(DIST)\bin\%p diff --git a/mozilla/layout/base/nsLayoutUtils.cpp b/mozilla/layout/base/nsLayoutUtils.cpp new file mode 100644 index 00000000000..f7910ed824a --- /dev/null +++ b/mozilla/layout/base/nsLayoutUtils.cpp @@ -0,0 +1,121 @@ +/* -*- 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.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/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released + * March 31, 1998. + * + * The Initial Developer of the Original Code is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the + * terms of the GNU Public License (the "GPL"), in which case the + * provisions of the GPL are applicable instead of those above. + * If you wish to allow use of your version of this file only + * under the terms of the GPL and not to allow others to use your + * version of this file under the NPL, indicate your decision by + * deleting the provisions above and replace them with the notice + * and other provisions required by the GPL. If you do not delete + * the provisions above, a recipient may use your version of this + * file under either the NPL or the GPL. + */ + +/* A namespace class for static layout utilities. */ + +#include "jsapi.h" +#include "nsCOMPtr.h" +#include "nsIScriptGlobalObject.h" +#include "nsIScriptContext.h" +#include "nsLayoutUtils.h" + +// static +nsresult +nsLayoutUtils::GetStaticScriptGlobal(JSContext* aContext, + JSObject* aObj, + nsIScriptGlobalObject** aNativeGlobal) +{ + nsISupports* supports; + JSClass* clazz; + JSObject* parent; + JSObject* glob = aObj; // starting point for search + + if (!glob) + return NS_ERROR_FAILURE; + + while (nsnull != (parent = JS_GetParent(aContext, glob))) + glob = parent; + +#ifdef JS_THREADSAFE + clazz = JS_GetClass(aContext, glob); +#else + clazz = JS_GetClass(glob); +#endif + + if (!clazz || + !(clazz->flags & JSCLASS_HAS_PRIVATE) || + !(clazz->flags & JSCLASS_PRIVATE_IS_NSISUPPORTS) || + !(supports = (nsISupports*) JS_GetPrivate(aContext, glob))) { + return NS_ERROR_FAILURE; + } + + return supports->QueryInterface(NS_GET_IID(nsIScriptGlobalObject), + (void**) aNativeGlobal); +} + +//static +nsresult +nsLayoutUtils::GetStaticScriptContext(JSContext* aContext, + JSObject* aObj, + nsIScriptContext** aScriptContext) +{ + nsCOMPtr nativeGlobal; + GetStaticScriptGlobal(aContext, aObj, getter_AddRefs(nativeGlobal)); + if (!nativeGlobal) + return NS_ERROR_FAILURE; + nsIScriptContext* scriptContext = nsnull; + nativeGlobal->GetContext(&scriptContext); + *aScriptContext = scriptContext; + return scriptContext ? NS_OK : NS_ERROR_FAILURE; +} + +//static +nsresult +nsLayoutUtils::GetDynamicScriptGlobal(JSContext* aContext, + nsIScriptGlobalObject** aNativeGlobal) +{ + nsIScriptGlobalObject* nativeGlobal = nsnull; + nsCOMPtr scriptCX; + GetDynamicScriptContext(aContext, getter_AddRefs(scriptCX)); + if (scriptCX) { + *aNativeGlobal = nativeGlobal = scriptCX->GetGlobalObject(); + } + return nativeGlobal ? NS_OK : NS_ERROR_FAILURE; +} + +//static +nsresult +nsLayoutUtils::GetDynamicScriptContext(JSContext *aContext, + nsIScriptContext** aScriptContext) +{ + // XXX We rely on the rule that if any JSContext in our JSRuntime has a + // private set then that private *must* be a pointer to an nsISupports. + nsISupports *supports = (nsIScriptContext*) JS_GetContextPrivate(aContext); + if (!supports) + return nsnull; + return supports->QueryInterface(NS_GET_IID(nsIScriptContext), + (void**)aScriptContext); +} + + diff --git a/mozilla/layout/base/nsLayoutUtils.h b/mozilla/layout/base/nsLayoutUtils.h new file mode 100644 index 00000000000..3b04cc63524 --- /dev/null +++ b/mozilla/layout/base/nsLayoutUtils.h @@ -0,0 +1,67 @@ +/* -*- 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.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/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released + * March 31, 1998. + * + * The Initial Developer of the Original Code is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the + * terms of the GNU Public License (the "GPL"), in which case the + * provisions of the GPL are applicable instead of those above. + * If you wish to allow use of your version of this file only + * under the terms of the GPL and not to allow others to use your + * version of this file under the NPL, indicate your decision by + * deleting the provisions above and replace them with the notice + * and other provisions required by the GPL. If you do not delete + * the provisions above, a recipient may use your version of this + * file under either the NPL or the GPL. + */ + +/* A namespace class for static layout utilities. */ + +#ifndef nsLayoutUtils_h___ +#define nsLayoutUtils_h___ + +#include "nslayout.h" +#include "jspubtd.h" + +class nsIScriptContext; +class nsIScriptGlobalObject; + +class nsLayoutUtils +{ +public: + + // These are copied from nsJSUtils.h + + static nsresult GetStaticScriptGlobal(JSContext* aContext, + JSObject* aObj, + nsIScriptGlobalObject** aNativeGlobal); + + static nsresult GetStaticScriptContext(JSContext* aContext, + JSObject* aObj, + nsIScriptContext** aScriptContext); + + static nsresult GetDynamicScriptGlobal(JSContext *aContext, + nsIScriptGlobalObject** aNativeGlobal); + + static nsresult GetDynamicScriptContext(JSContext *aContext, + nsIScriptContext** aScriptContext); +}; + +#endif /* nsLayoutUtils_h___ */ diff --git a/mozilla/layout/base/public/MANIFEST b/mozilla/layout/base/public/MANIFEST index a6552a985ac..c9c3638c3fe 100644 --- a/mozilla/layout/base/public/MANIFEST +++ b/mozilla/layout/base/public/MANIFEST @@ -31,6 +31,7 @@ nsFrameList.h nsFrameTraversal.h nsLayoutAtoms.h nsLayoutAtomList.h +nsLayoutUtils.h nsStyleChangeList.h nsStyleCoord.h nsStyleStruct.h diff --git a/mozilla/layout/base/public/Makefile.in b/mozilla/layout/base/public/Makefile.in index bd9de8fa31a..7ba02ae8e78 100644 --- a/mozilla/layout/base/public/Makefile.in +++ b/mozilla/layout/base/public/Makefile.in @@ -67,6 +67,7 @@ nsIStyleRuleProcessor.h \ nsITextContent.h \ nsLayoutAtoms.h \ nsLayoutAtomList.h \ +nsLayoutUtils.h \ nsFrameList.h \ nsFrameTraversal.h \ nsStyleChangeList.h \ diff --git a/mozilla/layout/base/public/makefile.win b/mozilla/layout/base/public/makefile.win index b71b9b528a8..34b8e3d36fe 100644 --- a/mozilla/layout/base/public/makefile.win +++ b/mozilla/layout/base/public/makefile.win @@ -60,6 +60,7 @@ EXPORTS = \ nsITextContent.h \ nsLayoutAtoms.h \ nsLayoutAtomList.h \ + nsLayoutUtils.h \ nsFrameList.h \ nsFrameTraversal.h \ nsStyleChangeList.h \ diff --git a/mozilla/layout/base/public/nsLayoutUtils.h b/mozilla/layout/base/public/nsLayoutUtils.h new file mode 100644 index 00000000000..3b04cc63524 --- /dev/null +++ b/mozilla/layout/base/public/nsLayoutUtils.h @@ -0,0 +1,67 @@ +/* -*- 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.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/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released + * March 31, 1998. + * + * The Initial Developer of the Original Code is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the + * terms of the GNU Public License (the "GPL"), in which case the + * provisions of the GPL are applicable instead of those above. + * If you wish to allow use of your version of this file only + * under the terms of the GPL and not to allow others to use your + * version of this file under the NPL, indicate your decision by + * deleting the provisions above and replace them with the notice + * and other provisions required by the GPL. If you do not delete + * the provisions above, a recipient may use your version of this + * file under either the NPL or the GPL. + */ + +/* A namespace class for static layout utilities. */ + +#ifndef nsLayoutUtils_h___ +#define nsLayoutUtils_h___ + +#include "nslayout.h" +#include "jspubtd.h" + +class nsIScriptContext; +class nsIScriptGlobalObject; + +class nsLayoutUtils +{ +public: + + // These are copied from nsJSUtils.h + + static nsresult GetStaticScriptGlobal(JSContext* aContext, + JSObject* aObj, + nsIScriptGlobalObject** aNativeGlobal); + + static nsresult GetStaticScriptContext(JSContext* aContext, + JSObject* aObj, + nsIScriptContext** aScriptContext); + + static nsresult GetDynamicScriptGlobal(JSContext *aContext, + nsIScriptGlobalObject** aNativeGlobal); + + static nsresult GetDynamicScriptContext(JSContext *aContext, + nsIScriptContext** aScriptContext); +}; + +#endif /* nsLayoutUtils_h___ */ diff --git a/mozilla/layout/base/src/Makefile.in b/mozilla/layout/base/src/Makefile.in index 26d31f2c030..71b63c6a49d 100644 --- a/mozilla/layout/base/src/Makefile.in +++ b/mozilla/layout/base/src/Makefile.in @@ -50,6 +50,7 @@ CPPSRCS = \ nsGenericElement.cpp \ nsLayoutAtoms.cpp \ nsLayoutDebugger.cpp \ + nsLayoutUtils.cpp \ nsNameSpaceManager.cpp \ nsPluginViewer.cpp \ nsPresContext.cpp \ diff --git a/mozilla/layout/base/src/makefile.win b/mozilla/layout/base/src/makefile.win index ab21bfd69bd..eb02fd6f954 100644 --- a/mozilla/layout/base/src/makefile.win +++ b/mozilla/layout/base/src/makefile.win @@ -60,6 +60,7 @@ CPPSRCS = \ nsRangeList.cpp \ nsLayoutAtoms.cpp \ nsLayoutDebugger.cpp \ + nsLayoutUtils.cpp \ nsCaret.cpp \ nsRange.cpp \ nsTextContentChangeData.cpp \ @@ -104,6 +105,7 @@ CPP_OBJS= \ .\$(OBJDIR)\nsRangeList.obj \ .\$(OBJDIR)\nsLayoutAtoms.obj \ .\$(OBJDIR)\nsLayoutDebugger.obj \ + .\$(OBJDIR)\nsLayoutUtils.obj \ .\$(OBJDIR)\nsCaret.obj \ .\$(OBJDIR)\nsRange.obj \ .\$(OBJDIR)\nsTextContentChangeData.obj \ diff --git a/mozilla/layout/base/src/nsDocument.cpp b/mozilla/layout/base/src/nsDocument.cpp index 23e506eebd7..53eaef97aaf 100644 --- a/mozilla/layout/base/src/nsDocument.cpp +++ b/mozilla/layout/base/src/nsDocument.cpp @@ -80,6 +80,7 @@ #include "nsDOMError.h" #include "nsIScrollableView.h" #include "nsIFrame.h" +#include "nsLayoutUtils.h" #include "nsIScriptSecurityManager.h" @@ -2473,17 +2474,17 @@ nsresult nsDocument::RemoveEventListener(const nsString& aType, nsIDOMEventListe return NS_ERROR_FAILURE; } -PRBool nsDocument::AddProperty(JSContext *aContext, jsval aID, jsval *aVp) +PRBool nsDocument::AddProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { return PR_TRUE; } -PRBool nsDocument::DeleteProperty(JSContext *aContext, jsval aID, jsval *aVp) +PRBool nsDocument::DeleteProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { return PR_TRUE; } -PRBool nsDocument::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) +PRBool nsDocument::GetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { PRBool result = PR_TRUE; @@ -2492,7 +2493,7 @@ PRBool nsDocument::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) if (mScriptGlobalObject) { nsCOMPtr window(do_QueryInterface(mScriptGlobalObject)); if(window) { - result = window->GetProperty(aContext, aID, aVp); + result = window->GetProperty(aContext, aObj, aID, aVp); } else { result = PR_FALSE; @@ -2503,7 +2504,7 @@ PRBool nsDocument::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) return result; } -PRBool nsDocument::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) +PRBool nsDocument::SetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { PRBool result = PR_TRUE; @@ -2518,8 +2519,9 @@ PRBool nsDocument::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) if (atom.get() == nsLayoutAtoms::onmousedown || atom.get() == nsLayoutAtoms::onmouseup || atom.get() == nsLayoutAtoms::onclick || atom.get() == nsLayoutAtoms::onmouseover || atom.get() == nsLayoutAtoms::onmouseout) { if (NS_OK == GetListenerManager(&mManager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMMouseListenerIID)) { + nsCOMPtr mScriptCX; + if(NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMMouseListenerIID)) { NS_RELEASE(mManager); return PR_FALSE; } @@ -2527,8 +2529,9 @@ PRBool nsDocument::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) } else if (atom.get() == nsLayoutAtoms::onkeydown || atom.get() == nsLayoutAtoms::onkeyup || atom.get() == nsLayoutAtoms::onkeypress) { if (NS_OK == GetListenerManager(&mManager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMKeyListenerIID)) { + nsCOMPtr mScriptCX; + if(NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMKeyListenerIID)) { NS_RELEASE(mManager); return PR_FALSE; } @@ -2536,8 +2539,9 @@ PRBool nsDocument::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) } else if (atom.get() == nsLayoutAtoms::onmousemove) { if (NS_OK == GetListenerManager(&mManager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMMouseMotionListenerIID)) { + nsCOMPtr mScriptCX; + if(NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMMouseMotionListenerIID)) { NS_RELEASE(mManager); return PR_FALSE; } @@ -2545,8 +2549,9 @@ PRBool nsDocument::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) } else if (atom.get() == nsLayoutAtoms::onfocus || atom.get() == nsLayoutAtoms::onblur) { if (NS_OK == GetListenerManager(&mManager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMFocusListenerIID)) { + nsCOMPtr mScriptCX; + if(NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMFocusListenerIID)) { NS_RELEASE(mManager); return PR_FALSE; } @@ -2555,8 +2560,9 @@ PRBool nsDocument::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) else if (atom.get() == nsLayoutAtoms::onsubmit || atom.get() == nsLayoutAtoms::onreset || atom.get() == nsLayoutAtoms::onchange || atom.get() == nsLayoutAtoms::onselect) { if (NS_OK == GetListenerManager(&mManager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMFormListenerIID)) { + nsCOMPtr mScriptCX; + if(NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMFormListenerIID)) { NS_RELEASE(mManager); return PR_FALSE; } @@ -2565,8 +2571,9 @@ PRBool nsDocument::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) else if (atom.get() == nsLayoutAtoms::onload || atom.get() == nsLayoutAtoms::onunload || atom.get() == nsLayoutAtoms::onabort || atom.get() == nsLayoutAtoms::onerror) { if (NS_OK == GetListenerManager(&mManager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMLoadListenerIID)) { + nsCOMPtr mScriptCX; + if(NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMLoadListenerIID)) { NS_RELEASE(mManager); return PR_FALSE; } @@ -2574,9 +2581,9 @@ PRBool nsDocument::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) } else if (atom.get() == nsLayoutAtoms::onpaint) { if (NS_OK == GetListenerManager(&mManager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *) - JS_GetContextPrivate(aContext); - if (NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, + nsCOMPtr mScriptCX; + if(NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != mManager->RegisterScriptEventListener(mScriptCX, this, atom, kIDOMPaintListenerIID)) { NS_RELEASE(mManager); return PR_FALSE; @@ -2591,7 +2598,7 @@ PRBool nsDocument::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) if (mScriptGlobalObject) { nsCOMPtr window(do_QueryInterface(mScriptGlobalObject)); if(window) { - result = window->SetProperty(aContext, aID, aVp); + result = window->SetProperty(aContext, aObj, aID, aVp); } else { result = PR_FALSE; @@ -2602,22 +2609,22 @@ PRBool nsDocument::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) return result; } -PRBool nsDocument::EnumerateProperty(JSContext *aContext) +PRBool nsDocument::EnumerateProperty(JSContext *aContext, JSObject *aObj) { return PR_TRUE; } -PRBool nsDocument::Resolve(JSContext *aContext, jsval aID) +PRBool nsDocument::Resolve(JSContext *aContext, JSObject *aObj, jsval aID) { return PR_TRUE; } -PRBool nsDocument::Convert(JSContext *aContext, jsval aID) +PRBool nsDocument::Convert(JSContext *aContext, JSObject *aObj, jsval aID) { return PR_TRUE; } -void nsDocument::Finalize(JSContext *aContext) +void nsDocument::Finalize(JSContext *aContext, JSObject *aObj) { } @@ -3098,3 +3105,4 @@ PRBool nsDocument::GetDisplaySelection() const { return mDisplaySelection; } + diff --git a/mozilla/layout/base/src/nsDocument.h b/mozilla/layout/base/src/nsDocument.h index 8a21064f109..97bc288c85f 100644 --- a/mozilla/layout/base/src/nsDocument.h +++ b/mozilla/layout/base/src/nsDocument.h @@ -401,14 +401,18 @@ public: virtual PRBool GetDisplaySelection() const; // 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); + virtual PRBool AddProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + virtual PRBool DeleteProperty(JSContext *aContext, + JSObject *aObj, jsval aID, jsval *aVp); + virtual PRBool GetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + virtual PRBool SetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + virtual PRBool EnumerateProperty(JSContext *aContext, JSObject *aObj); + virtual PRBool Resolve(JSContext *aContext, JSObject *aObj, jsval aID); + virtual PRBool Convert(JSContext *aContext, JSObject *aObj, jsval aID); + virtual void Finalize(JSContext *aContext, JSObject *aObj); /** * Methods to output the document contents as Text or HTML, outputting into diff --git a/mozilla/layout/base/src/nsGenericElement.cpp b/mozilla/layout/base/src/nsGenericElement.cpp index e87a1a9f5a5..965a2fb92b3 100644 --- a/mozilla/layout/base/src/nsGenericElement.cpp +++ b/mozilla/layout/base/src/nsGenericElement.cpp @@ -62,6 +62,7 @@ #include "nsLayoutAtoms.h" #include "nsHTMLAtoms.h" +#include "nsLayoutUtils.h" NS_DEFINE_IID(kIDOMNodeIID, NS_IDOMNODE_IID); NS_DEFINE_IID(kIDOMElementIID, NS_IDOMELEMENT_IID); @@ -1079,25 +1080,25 @@ nsGenericElement::RemoveEventListener(const nsString& aType, nsIDOMEventListener // nsIJSScriptObject implementation PRBool -nsGenericElement::AddProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsGenericElement::AddProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { return PR_TRUE; } PRBool -nsGenericElement::DeleteProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsGenericElement::DeleteProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { return PR_TRUE; } PRBool -nsGenericElement::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsGenericElement::GetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { return PR_TRUE; } PRBool -nsGenericElement::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsGenericElement::SetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { nsIScriptObjectOwner *owner; @@ -1116,8 +1117,9 @@ nsGenericElement::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) if (atom.get() == nsLayoutAtoms::onmousedown || atom.get() == nsLayoutAtoms::onmouseup || atom.get() == nsLayoutAtoms::onclick || atom.get() == nsLayoutAtoms::onmouseover || atom.get() == nsLayoutAtoms::onmouseout) { if (NS_OK == GetListenerManager(&manager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, atom, kIDOMMouseListenerIID)) { + nsCOMPtr mScriptCX; + if (NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)GetDOMSlots()->mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, atom, kIDOMMouseListenerIID)) { NS_RELEASE(manager); return PR_FALSE; } @@ -1125,8 +1127,9 @@ nsGenericElement::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) } else if (atom.get() == nsLayoutAtoms::onkeydown || atom.get() == nsLayoutAtoms::onkeyup || atom.get() == nsLayoutAtoms::onkeypress) { if (NS_OK == GetListenerManager(&manager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, atom, kIDOMKeyListenerIID)) { + nsCOMPtr mScriptCX; + if (NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)GetDOMSlots()->mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, atom, kIDOMKeyListenerIID)) { NS_RELEASE(manager); return PR_FALSE; } @@ -1134,8 +1137,9 @@ nsGenericElement::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) } else if (atom.get() == nsLayoutAtoms::onmousemove) { if (NS_OK == GetListenerManager(&manager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, atom, kIDOMMouseMotionListenerIID)) { + nsCOMPtr mScriptCX; + if (NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)GetDOMSlots()->mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, atom, kIDOMMouseMotionListenerIID)) { NS_RELEASE(manager); return PR_FALSE; } @@ -1143,8 +1147,9 @@ nsGenericElement::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) } else if (atom.get() == nsLayoutAtoms::onfocus || atom.get() == nsLayoutAtoms::onblur) { if (NS_OK == GetListenerManager(&manager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, atom, kIDOMFocusListenerIID)) { + nsCOMPtr mScriptCX; + if (NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)GetDOMSlots()->mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, atom, kIDOMFocusListenerIID)) { NS_RELEASE(manager); return PR_FALSE; } @@ -1153,8 +1158,9 @@ nsGenericElement::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) else if (atom.get() == nsLayoutAtoms::onsubmit || atom.get() == nsLayoutAtoms::onreset || atom.get() == nsLayoutAtoms::onchange || atom.get() == nsLayoutAtoms::onselect) { if (NS_OK == GetListenerManager(&manager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, atom, kIDOMFormListenerIID)) { + nsCOMPtr mScriptCX; + if (NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)GetDOMSlots()->mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, atom, kIDOMFormListenerIID)) { NS_RELEASE(manager); return PR_FALSE; } @@ -1163,8 +1169,9 @@ nsGenericElement::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) else if (atom.get() == nsLayoutAtoms::onload || atom.get() == nsLayoutAtoms::onunload || atom.get() == nsLayoutAtoms::onabort || atom.get() == nsLayoutAtoms::onerror) { if (NS_OK == GetListenerManager(&manager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *)JS_GetContextPrivate(aContext); - if (NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, atom, kIDOMLoadListenerIID)) { + nsCOMPtr mScriptCX; + if (NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)GetDOMSlots()->mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, atom, kIDOMLoadListenerIID)) { NS_RELEASE(manager); return PR_FALSE; } @@ -1172,9 +1179,9 @@ nsGenericElement::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) } else if (atom.get() == nsLayoutAtoms::onpaint) { if (NS_OK == GetListenerManager(&manager)) { - nsIScriptContext *mScriptCX = (nsIScriptContext *) - JS_GetContextPrivate(aContext); - if (NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, + nsCOMPtr mScriptCX; + if (NS_FAILED(nsLayoutUtils::GetStaticScriptContext(aContext, (JSObject*)GetDOMSlots()->mScriptObject, getter_AddRefs(mScriptCX))) || + NS_OK != manager->RegisterScriptEventListener(mScriptCX, owner, atom, kIDOMPaintListenerIID)) { NS_RELEASE(manager); return PR_FALSE; @@ -1191,25 +1198,25 @@ nsGenericElement::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) } PRBool -nsGenericElement::EnumerateProperty(JSContext *aContext) +nsGenericElement::EnumerateProperty(JSContext *aContext, JSObject *aObj) { return PR_TRUE; } PRBool -nsGenericElement::Resolve(JSContext *aContext, jsval aID) +nsGenericElement::Resolve(JSContext *aContext, JSObject *aObj, jsval aID) { return PR_TRUE; } PRBool -nsGenericElement::Convert(JSContext *aContext, jsval aID) +nsGenericElement::Convert(JSContext *aContext, JSObject *aObj, jsval aID) { return PR_TRUE; } void -nsGenericElement::Finalize(JSContext *aContext) +nsGenericElement::Finalize(JSContext *aContext, JSObject *aObj) { } @@ -2218,3 +2225,4 @@ nsGenericContainerElement::SizeOf(nsISizeOfHandler* aSizer, PRUint32* aResult, *aResult = sum; return NS_OK; } + diff --git a/mozilla/layout/base/src/nsGenericElement.h b/mozilla/layout/base/src/nsGenericElement.h index 60c2a42d52d..042c5cb2841 100644 --- a/mozilla/layout/base/src/nsGenericElement.h +++ b/mozilla/layout/base/src/nsGenericElement.h @@ -170,14 +170,18 @@ public: size_t aInstanceSize) const; // Implementation for nsIJSScriptObject - PRBool AddProperty(JSContext *aContext, jsval aID, jsval *aVp); - PRBool DeleteProperty(JSContext *aContext, jsval aID, jsval *aVp); - PRBool GetProperty(JSContext *aContext, jsval aID, jsval *aVp); - PRBool SetProperty(JSContext *aContext, jsval aID, jsval *aVp); - PRBool EnumerateProperty(JSContext *aContext); - PRBool Resolve(JSContext *aContext, jsval aID); - PRBool Convert(JSContext *aContext, jsval aID); - void Finalize(JSContext *aContext); + PRBool AddProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool DeleteProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool GetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool SetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool EnumerateProperty(JSContext *aContext, JSObject *aObj); + PRBool Resolve(JSContext *aContext, JSObject *aObj, jsval aID); + PRBool Convert(JSContext *aContext, JSObject *aObj, jsval aID); + void Finalize(JSContext *aContext, JSObject *aObj); // Implementation for nsISupports NS_IMETHOD QueryInterface(REFNSIID aIID, diff --git a/mozilla/layout/base/src/nsLayoutUtils.cpp b/mozilla/layout/base/src/nsLayoutUtils.cpp new file mode 100644 index 00000000000..f7910ed824a --- /dev/null +++ b/mozilla/layout/base/src/nsLayoutUtils.cpp @@ -0,0 +1,121 @@ +/* -*- 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.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/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is Mozilla Communicator client code, released + * March 31, 1998. + * + * The Initial Developer of the Original Code is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the + * terms of the GNU Public License (the "GPL"), in which case the + * provisions of the GPL are applicable instead of those above. + * If you wish to allow use of your version of this file only + * under the terms of the GPL and not to allow others to use your + * version of this file under the NPL, indicate your decision by + * deleting the provisions above and replace them with the notice + * and other provisions required by the GPL. If you do not delete + * the provisions above, a recipient may use your version of this + * file under either the NPL or the GPL. + */ + +/* A namespace class for static layout utilities. */ + +#include "jsapi.h" +#include "nsCOMPtr.h" +#include "nsIScriptGlobalObject.h" +#include "nsIScriptContext.h" +#include "nsLayoutUtils.h" + +// static +nsresult +nsLayoutUtils::GetStaticScriptGlobal(JSContext* aContext, + JSObject* aObj, + nsIScriptGlobalObject** aNativeGlobal) +{ + nsISupports* supports; + JSClass* clazz; + JSObject* parent; + JSObject* glob = aObj; // starting point for search + + if (!glob) + return NS_ERROR_FAILURE; + + while (nsnull != (parent = JS_GetParent(aContext, glob))) + glob = parent; + +#ifdef JS_THREADSAFE + clazz = JS_GetClass(aContext, glob); +#else + clazz = JS_GetClass(glob); +#endif + + if (!clazz || + !(clazz->flags & JSCLASS_HAS_PRIVATE) || + !(clazz->flags & JSCLASS_PRIVATE_IS_NSISUPPORTS) || + !(supports = (nsISupports*) JS_GetPrivate(aContext, glob))) { + return NS_ERROR_FAILURE; + } + + return supports->QueryInterface(NS_GET_IID(nsIScriptGlobalObject), + (void**) aNativeGlobal); +} + +//static +nsresult +nsLayoutUtils::GetStaticScriptContext(JSContext* aContext, + JSObject* aObj, + nsIScriptContext** aScriptContext) +{ + nsCOMPtr nativeGlobal; + GetStaticScriptGlobal(aContext, aObj, getter_AddRefs(nativeGlobal)); + if (!nativeGlobal) + return NS_ERROR_FAILURE; + nsIScriptContext* scriptContext = nsnull; + nativeGlobal->GetContext(&scriptContext); + *aScriptContext = scriptContext; + return scriptContext ? NS_OK : NS_ERROR_FAILURE; +} + +//static +nsresult +nsLayoutUtils::GetDynamicScriptGlobal(JSContext* aContext, + nsIScriptGlobalObject** aNativeGlobal) +{ + nsIScriptGlobalObject* nativeGlobal = nsnull; + nsCOMPtr scriptCX; + GetDynamicScriptContext(aContext, getter_AddRefs(scriptCX)); + if (scriptCX) { + *aNativeGlobal = nativeGlobal = scriptCX->GetGlobalObject(); + } + return nativeGlobal ? NS_OK : NS_ERROR_FAILURE; +} + +//static +nsresult +nsLayoutUtils::GetDynamicScriptContext(JSContext *aContext, + nsIScriptContext** aScriptContext) +{ + // XXX We rely on the rule that if any JSContext in our JSRuntime has a + // private set then that private *must* be a pointer to an nsISupports. + nsISupports *supports = (nsIScriptContext*) JS_GetContextPrivate(aContext); + if (!supports) + return nsnull; + return supports->QueryInterface(NS_GET_IID(nsIScriptContext), + (void**)aScriptContext); +} + + diff --git a/mozilla/layout/html/content/src/nsHTMLFormElement.cpp b/mozilla/layout/html/content/src/nsHTMLFormElement.cpp index 04151453fc3..cfbe0fb3437 100644 --- a/mozilla/layout/html/content/src/nsHTMLFormElement.cpp +++ b/mozilla/layout/html/content/src/nsHTMLFormElement.cpp @@ -41,6 +41,7 @@ #include "nsIFrame.h" #include "nsISizeOfHandler.h" #include "nsIScriptGlobalObject.h" +#include "nsLayoutUtils.h" static NS_DEFINE_IID(kIDOMHTMLFormElementIID, NS_IDOMHTMLFORMELEMENT_IID); static NS_DEFINE_IID(kIFormControlIID, NS_IFORMCONTROL_IID); @@ -112,14 +113,18 @@ public: NS_IMPL_IHTMLCONTENT_USING_GENERIC(mInner) // 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); + PRBool AddProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool DeleteProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool GetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool SetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool EnumerateProperty(JSContext *aContext, JSObject *aObj); + PRBool Resolve(JSContext *aContext, JSObject *aObj, jsval aID); + PRBool Convert(JSContext *aContext, JSObject *aObj, jsval aID); + void Finalize(JSContext *aContext, JSObject *aObj); // nsIForm NS_IMETHOD AddElement(nsIFormControl* aElement); @@ -520,37 +525,37 @@ nsHTMLFormElement::NamedItem(const nsString& aName, nsIDOMElement** aReturn) } PRBool -nsHTMLFormElement::AddProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsHTMLFormElement::AddProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { - return mInner.AddProperty(aContext, aID, aVp); + return mInner.AddProperty(aContext, aObj, aID, aVp); } PRBool -nsHTMLFormElement::DeleteProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsHTMLFormElement::DeleteProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { - return mInner.DeleteProperty(aContext, aID, aVp); + return mInner.DeleteProperty(aContext, aObj, aID, aVp); } PRBool -nsHTMLFormElement::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsHTMLFormElement::GetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { - return mInner.GetProperty(aContext, aID, aVp); + return mInner.GetProperty(aContext, aObj, aID, aVp); } PRBool -nsHTMLFormElement::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsHTMLFormElement::SetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { - return mInner.SetProperty(aContext, aID, aVp); + return mInner.SetProperty(aContext, aObj, aID, aVp); } PRBool -nsHTMLFormElement::EnumerateProperty(JSContext *aContext) +nsHTMLFormElement::EnumerateProperty(JSContext *aContext, JSObject *aObj) { - return mInner.EnumerateProperty(aContext); + return mInner.EnumerateProperty(aContext, aObj); } PRBool -nsHTMLFormElement::Resolve(JSContext *aContext, jsval aID) +nsHTMLFormElement::Resolve(JSContext *aContext, JSObject *aObj, jsval aID) { nsCOMPtr element; char* str = JS_GetStringBytes(JS_ValueToString(aContext, aID)); @@ -564,25 +569,13 @@ nsHTMLFormElement::Resolve(JSContext *aContext, jsval aID) if (owner) { nsCOMPtr scriptContext; - - if (nsnull != mInner.mDocument) { - nsCOMPtr globalObject; - mInner.mDocument->GetScriptGlobalObject(getter_AddRefs(globalObject)); - if (globalObject) { - result = globalObject->GetContext(getter_AddRefs(scriptContext)); - } - } - else { - scriptContext = dont_AddRef((nsIScriptContext*)JS_GetContextPrivate(aContext)); - } - - JSObject* obj; + nsLayoutUtils::GetStaticScriptContext(aContext, aObj, + getter_AddRefs(scriptContext)); if (scriptContext) { + JSObject* obj; result = owner->GetScriptObject(scriptContext, (void**)&obj); if (NS_SUCCEEDED(result) && (nsnull != obj)) { - JSObject* myObj; - result = mInner.GetScriptObject(scriptContext, (void**)&myObj); - ret = ::JS_DefineProperty(aContext, myObj, + ret = ::JS_DefineProperty(aContext, aObj, str, OBJECT_TO_JSVAL(obj), nsnull, nsnull, 0); } @@ -590,7 +583,7 @@ nsHTMLFormElement::Resolve(JSContext *aContext, jsval aID) } } else { - ret = mInner.Resolve(aContext, aID); + ret = mInner.Resolve(aContext, aObj, aID); } if (NS_FAILED(result)) { @@ -601,15 +594,15 @@ nsHTMLFormElement::Resolve(JSContext *aContext, jsval aID) } PRBool -nsHTMLFormElement::Convert(JSContext *aContext, jsval aID) +nsHTMLFormElement::Convert(JSContext *aContext, JSObject *aObj, jsval aID) { - return mInner.Convert(aContext, aID); + return mInner.Convert(aContext, aObj, aID); } void -nsHTMLFormElement::Finalize(JSContext *aContext) +nsHTMLFormElement::Finalize(JSContext *aContext, JSObject *aObj) { - mInner.Finalize(aContext); + mInner.Finalize(aContext, aObj); } NS_IMETHODIMP diff --git a/mozilla/layout/html/content/src/nsHTMLImageElement.cpp b/mozilla/layout/html/content/src/nsHTMLImageElement.cpp index 6a43b0d4747..bedb49fe6b9 100644 --- a/mozilla/layout/html/content/src/nsHTMLImageElement.cpp +++ b/mozilla/layout/html/content/src/nsHTMLImageElement.cpp @@ -45,7 +45,9 @@ #include "nsIURL.h" #include "nsIServiceManager.h" #include "nsNetUtil.h" +#include "nsLayoutUtils.h" #include "nsIWebShell.h" + static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); // XXX nav attrs: suppress @@ -119,18 +121,22 @@ public: NS_IMPL_IHTMLCONTENT_USING_GENERIC(mInner) // 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); + PRBool AddProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool DeleteProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool GetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool SetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool EnumerateProperty(JSContext *aContext, JSObject *aObj); + PRBool Resolve(JSContext *aContext, JSObject *aObj, jsval aID); + PRBool Convert(JSContext *aContext, JSObject *aObj, jsval aID); + void Finalize(JSContext *aContext, JSObject *aObj); // nsIJSNativeInitializer - NS_IMETHOD Initialize(JSContext* aContext, PRUint32 argc, jsval *argv); - + NS_IMETHOD Initialize(JSContext* aContext, JSObject *aObj, + PRUint32 argc, jsval *argv); nsresult SetSrcInner(nsIURI* aBaseURL, const nsString& aSrc); nsresult GetCallerSourceURL(JSContext* cx, nsIURI** sourceURL); @@ -338,19 +344,19 @@ nsHTMLImageElement::HandleDOMEvent(nsIPresContext* aPresContext, } PRBool -nsHTMLImageElement::AddProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsHTMLImageElement::AddProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { - return mInner.AddProperty(aContext, aID, aVp); + return mInner.AddProperty(aContext, aObj, aID, aVp); } PRBool -nsHTMLImageElement::DeleteProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsHTMLImageElement::DeleteProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { - return mInner.DeleteProperty(aContext, aID, aVp); + return mInner.DeleteProperty(aContext, aObj, aID, aVp); } PRBool -nsHTMLImageElement::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsHTMLImageElement::GetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { PRBool result = PR_TRUE; @@ -376,7 +382,7 @@ nsHTMLImageElement::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) } } - return mInner.GetProperty(aContext, aID, aVp); + return mInner.GetProperty(aContext, aObj, aID, aVp); } nsresult @@ -384,24 +390,26 @@ nsHTMLImageElement::GetCallerSourceURL(JSContext* cx, nsIURI** sourceURL) { // XXX Code duplicated from nsHTMLDocument + // XXX Question, why does this return NS_OK on failure? nsresult result = NS_OK; - nsIScriptContext* context = (nsIScriptContext*)JS_GetContextPrivate(cx); - - if (nsnull != context) { - nsCOMPtr global; - global = dont_AddRef(context->GetGlobalObject()); - if (global) { - nsCOMPtr webShell; - - global->GetWebShell(getter_AddRefs(webShell)); - if (webShell) { - const PRUnichar* url; + // We need to use the dynamically scoped global and assume that the + // current JSContext is a DOM context with a nsIScriptGlobalObject so + // that we can get the url of the caller. + // XXX This will fail on non-DOM contexts :( - // XXX Ughh - incorrect ownership rules for url? - webShell->GetURL(&url); - result = NS_NewURI(sourceURL, url); - } + nsCOMPtr global; + nsLayoutUtils::GetDynamicScriptGlobal(cx, getter_AddRefs(global)); + if (global) { + nsCOMPtr webShell; + + global->GetWebShell(getter_AddRefs(webShell)); + if (webShell) { + const PRUnichar* url; + + // XXX Ughh - incorrect ownership rules for url? + webShell->GetURL(&url); + result = NS_NewURI(sourceURL, url); } } @@ -409,7 +417,7 @@ nsHTMLImageElement::GetCallerSourceURL(JSContext* cx, } PRBool -nsHTMLImageElement::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsHTMLImageElement::SetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { nsresult result = NS_OK; @@ -442,39 +450,40 @@ nsHTMLImageElement::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) } } else { - result = mInner.SetProperty(aContext, aID, aVp); + result = mInner.SetProperty(aContext, aObj, aID, aVp); } return (result == NS_OK); } PRBool -nsHTMLImageElement::EnumerateProperty(JSContext *aContext) +nsHTMLImageElement::EnumerateProperty(JSContext *aContext, JSObject *aObj) { - return mInner.EnumerateProperty(aContext); + return mInner.EnumerateProperty(aContext, aObj); } PRBool -nsHTMLImageElement::Resolve(JSContext *aContext, jsval aID) +nsHTMLImageElement::Resolve(JSContext *aContext, JSObject *aObj, jsval aID) { - return mInner.Resolve(aContext, aID); + return mInner.Resolve(aContext, aObj, aID); } PRBool -nsHTMLImageElement::Convert(JSContext *aContext, jsval aID) +nsHTMLImageElement::Convert(JSContext *aContext, JSObject *aObj, jsval aID) { - return mInner.Convert(aContext, aID); + return mInner.Convert(aContext, aObj, aID); } void -nsHTMLImageElement::Finalize(JSContext *aContext) +nsHTMLImageElement::Finalize(JSContext *aContext, JSObject *aObj) { - mInner.Finalize(aContext); + mInner.Finalize(aContext, aObj); } NS_IMETHODIMP -nsHTMLImageElement::Initialize(JSContext* aContext, +nsHTMLImageElement::Initialize(JSContext* aContext, + JSObject *aObj, PRUint32 argc, jsval *argv) { @@ -483,30 +492,26 @@ nsHTMLImageElement::Initialize(JSContext* aContext, // XXX This element is created unattached to any document. Later // on, it might be used to preload the image cache. For that, we // need a document (actually a pres context). The only way to get - // one is to associate the image with one at creation time, through - // the JSContext passed in. This mechanism is **UGLY** and makes - // some hard assumptions about the relationship between JSContexts - // and documents. + // one is to associate the image with one at creation time. + // This is safer than it used to be since we get the global object + // from the static scope chain rather than through the JSCOntext. - nsIScriptContext* scriptContext; - scriptContext = (nsIScriptContext*)JS_GetContextPrivate(aContext); - if (nsnull != scriptContext) { - nsIScriptGlobalObject* globalObject = scriptContext->GetGlobalObject(); - if (nsnull != globalObject) { - nsIDOMWindow* domWindow; - result = globalObject->QueryInterface(kIDOMWindowIID, (void**)&domWindow); + nsCOMPtr globalObject; + nsLayoutUtils::GetStaticScriptGlobal(aContext, aObj, + getter_AddRefs(globalObject));; + if (globalObject) { + nsIDOMWindow* domWindow; + result = globalObject->QueryInterface(kIDOMWindowIID, (void**)&domWindow); + if (NS_SUCCEEDED(result)) { + nsIDOMDocument* domDocument; + result = domWindow->GetDocument(&domDocument); if (NS_SUCCEEDED(result)) { - nsIDOMDocument* domDocument; - result = domWindow->GetDocument(&domDocument); - if (NS_SUCCEEDED(result)) { - // Maintain the reference - result = domDocument->QueryInterface(kIDocumentIID, - (void**)&mOwnerDocument); - NS_RELEASE(domDocument); - } - NS_RELEASE(domWindow); + // Maintain the reference + result = domDocument->QueryInterface(kIDocumentIID, + (void**)&mOwnerDocument); + NS_RELEASE(domDocument); } - NS_RELEASE(globalObject); + NS_RELEASE(domWindow); } } diff --git a/mozilla/layout/html/content/src/nsHTMLOptionElement.cpp b/mozilla/layout/html/content/src/nsHTMLOptionElement.cpp index 369a16644c0..354a79bbc02 100644 --- a/mozilla/layout/html/content/src/nsHTMLOptionElement.cpp +++ b/mozilla/layout/html/content/src/nsHTMLOptionElement.cpp @@ -115,7 +115,8 @@ public: NS_IMPL_IHTMLCONTENT_USING_GENERIC(mInner) // nsIJSNativeInitializer - NS_IMETHOD Initialize(JSContext* aContext, PRUint32 argc, jsval *argv); + NS_IMETHOD Initialize(JSContext* aContext, JSObject *aObj, + PRUint32 argc, jsval *argv); protected: nsGenericHTMLContainerElement mInner; @@ -556,6 +557,7 @@ nsresult nsHTMLOptionElement::GetSelect(nsIDOMHTMLSelectElement *&aSelectElement NS_IMETHODIMP nsHTMLOptionElement::Initialize(JSContext* aContext, + JSObject *aObj, PRUint32 argc, jsval *argv) { diff --git a/mozilla/layout/html/content/src/nsHTMLSelectElement.cpp b/mozilla/layout/html/content/src/nsHTMLSelectElement.cpp index e3ac7b696d6..84b727a3c44 100644 --- a/mozilla/layout/html/content/src/nsHTMLSelectElement.cpp +++ b/mozilla/layout/html/content/src/nsHTMLSelectElement.cpp @@ -78,18 +78,18 @@ public: NS_DECL_IDOMHTMLCOLLECTION // 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); + PRBool AddProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool DeleteProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool GetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool SetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + PRBool EnumerateProperty(JSContext *aContext, JSObject *aObj); + PRBool Resolve(JSContext *aContext, JSObject *aObj, jsval aID); + PRBool Convert(JSContext *aContext, JSObject *aObj, jsval aID); + void Finalize(JSContext *aContext, JSObject *aObj); void AddOption(nsIContent* aOption); void RemoveOption(nsIContent* aOption); @@ -1064,6 +1064,7 @@ nsOptionList::IndexOf(nsIContent* aOption) PRBool nsOptionList::AddProperty(JSContext *aContext, + JSObject *aObj, jsval aID, jsval *aVp) { @@ -1072,6 +1073,7 @@ nsOptionList::AddProperty(JSContext *aContext, PRBool nsOptionList::DeleteProperty(JSContext *aContext, + JSObject *aObj, jsval aID, jsval *aVp) { @@ -1080,6 +1082,7 @@ nsOptionList::DeleteProperty(JSContext *aContext, PRBool nsOptionList::GetProperty(JSContext *aContext, + JSObject *aObj, jsval aID, jsval *aVp) { @@ -1088,6 +1091,7 @@ nsOptionList::GetProperty(JSContext *aContext, PRBool nsOptionList::SetProperty(JSContext *aContext, + JSObject *aObj, jsval aID, jsval *aVp) { @@ -1150,25 +1154,25 @@ nsOptionList::SetProperty(JSContext *aContext, } PRBool -nsOptionList::EnumerateProperty(JSContext *aContext) +nsOptionList::EnumerateProperty(JSContext *aContext, JSObject *aObj) { return PR_TRUE; } PRBool -nsOptionList::Resolve(JSContext *aContext, jsval aID) +nsOptionList::Resolve(JSContext *aContext, JSObject *aObj, jsval aID) { return PR_TRUE; } PRBool -nsOptionList::Convert(JSContext *aContext, jsval aID) +nsOptionList::Convert(JSContext *aContext, JSObject *aObj, jsval aID) { return PR_TRUE; } void -nsOptionList::Finalize(JSContext *aContext) +nsOptionList::Finalize(JSContext *aContext, JSObject *aObj) { } diff --git a/mozilla/layout/html/document/src/nsHTMLDocument.cpp b/mozilla/layout/html/document/src/nsHTMLDocument.cpp index b30eab71540..123b9169282 100644 --- a/mozilla/layout/html/document/src/nsHTMLDocument.cpp +++ b/mozilla/layout/html/document/src/nsHTMLDocument.cpp @@ -88,6 +88,8 @@ #include "nsCharsetDetectionAdaptorCID.h" #include "nsICharsetAlias.h" #include "nsIPref.h" +#include "nsLayoutUtils.h" + #define DETECTOR_PROGID_MAX 127 static char g_detector_progid[DETECTOR_PROGID_MAX + 1]; static PRBool gInitDetector = PR_FALSE; @@ -1679,33 +1681,34 @@ nsHTMLDocument::GetSourceDocumentURL(JSContext* cx, // whatever connections possible. The problem is that this // could break if any of the connections along the way change. // I wish there were a better way. - nsresult result = NS_OK; *sourceURL = nsnull; - nsIScriptContext* context = (nsIScriptContext*)JS_GetContextPrivate(cx); - - if (nsnull != context) { - nsCOMPtr global; + // XXX Question, why does this return NS_OK on failure? + nsresult result = NS_OK; + + // We need to use the dynamically scoped global and assume that the + // current JSContext is a DOM context with a nsIScriptGlobalObject so + // that we can get the url of the caller. + // XXX This will fail on non-DOM contexts :( - global = dont_AddRef(context->GetGlobalObject()); - if (global) { - nsCOMPtr window(do_QueryInterface(global, &result)); + nsCOMPtr global; + nsLayoutUtils::GetDynamicScriptGlobal(cx, getter_AddRefs(global)); + if (global) { + nsCOMPtr window(do_QueryInterface(global, &result)); - if (window) { - nsCOMPtr document; - - result = window->GetDocument(getter_AddRefs(document)); - if (NS_SUCCEEDED(result)) { - nsCOMPtr doc(do_QueryInterface(document, &result)); - if (doc) { - *sourceURL = doc->GetDocumentURL(); - result = sourceURL ? NS_OK : NS_ERROR_FAILURE; - } - } + if (window) { + nsCOMPtr document; + + result = window->GetDocument(getter_AddRefs(document)); + if (NS_SUCCEEDED(result)) { + nsCOMPtr doc(do_QueryInterface(document, &result)); + if (doc) { + *sourceURL = doc->GetDocumentURL(); + result = sourceURL ? NS_OK : NS_ERROR_FAILURE; + } } } } - return result; } @@ -2570,7 +2573,7 @@ nsHTMLDocument::GetScriptObject(nsIScriptContext *aContext, void** aScriptObject } PRBool -nsHTMLDocument::Resolve(JSContext *aContext, jsval aID) +nsHTMLDocument::Resolve(JSContext *aContext, JSObject *aObj, jsval aID) { nsresult result; nsCOMPtr element; @@ -2584,33 +2587,19 @@ nsHTMLDocument::Resolve(JSContext *aContext, jsval aID) if (owner) { nsCOMPtr scriptContext; - nsCOMPtr scriptGlobal; - GetScriptGlobalObject(getter_AddRefs(scriptGlobal)); - - if (scriptGlobal) { - result = scriptGlobal->GetContext(getter_AddRefs(scriptContext)); - } - - if (!scriptContext) { - scriptContext = NS_STATIC_CAST(nsIScriptContext*, JS_GetContextPrivate(aContext)); - } - + nsLayoutUtils::GetStaticScriptContext(aContext, aObj, + getter_AddRefs(scriptContext)); if (scriptContext) { JSObject* obj; result = owner->GetScriptObject(scriptContext, (void**)&obj); if (NS_SUCCEEDED(result) && obj) { - JSObject* myObj; - result = GetScriptObject(scriptContext, (void**)&myObj); - if (NS_SUCCEEDED(result) && myObj) { - ret = ::JS_DefineProperty(aContext, myObj, - str, OBJECT_TO_JSVAL(obj), - nsnull, nsnull, 0); - } + ret = ::JS_DefineProperty(aContext, aObj, + str, OBJECT_TO_JSVAL(obj), + nsnull, nsnull, 0); } } } } - if (NS_FAILED(result)) { ret = PR_FALSE; } diff --git a/mozilla/layout/html/document/src/nsHTMLDocument.h b/mozilla/layout/html/document/src/nsHTMLDocument.h index 5ca31f89808..6c85a73d2ea 100644 --- a/mozilla/layout/html/document/src/nsHTMLDocument.h +++ b/mozilla/layout/html/document/src/nsHTMLDocument.h @@ -126,7 +126,7 @@ public: NS_IMETHOD GetScriptObject(nsIScriptContext *aContext, void** aScriptObject); // From nsJSScriptObject interface, implemented by nsDocument - virtual PRBool Resolve(JSContext *aContext, jsval aID); + virtual PRBool Resolve(JSContext *aContext, JSObject *aObj, jsval aID); /** * Finds text in content diff --git a/mozilla/layout/xml/content/src/nsXMLElement.h b/mozilla/layout/xml/content/src/nsXMLElement.h index bbe0e562823..f8ffe196bf1 100644 --- a/mozilla/layout/xml/content/src/nsXMLElement.h +++ b/mozilla/layout/xml/content/src/nsXMLElement.h @@ -200,29 +200,29 @@ public: NS_IMPL_IDOMEVENTRECEIVER_USING_GENERIC(mInner) // nsIJSScriptObject - virtual PRBool AddProperty(JSContext *aContext, jsval aID, jsval *aVp) { - return mInner.AddProperty(aContext, aID, aVp); + virtual PRBool AddProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { + return mInner.AddProperty(aContext, aObj, aID, aVp); } - virtual PRBool DeleteProperty(JSContext *aContext, jsval aID, jsval *aVp) { - return mInner.DeleteProperty(aContext, aID, aVp); + virtual PRBool DeleteProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { + return mInner.DeleteProperty(aContext, aObj, aID, aVp); } - virtual PRBool GetProperty(JSContext *aContext, jsval aID, jsval *aVp) { - return mInner.GetProperty(aContext, aID, aVp); + virtual PRBool GetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { + return mInner.GetProperty(aContext, aObj, aID, aVp); } - virtual PRBool SetProperty(JSContext *aContext, jsval aID, jsval *aVp) { - return mInner.SetProperty(aContext, aID, aVp); + virtual PRBool SetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { + return mInner.SetProperty(aContext, aObj, aID, aVp); } - virtual PRBool EnumerateProperty(JSContext *aContext) { - return mInner.EnumerateProperty(aContext); + virtual PRBool EnumerateProperty(JSContext *aContext, JSObject *aObj) { + return mInner.EnumerateProperty(aContext, aObj); } - virtual PRBool Resolve(JSContext *aContext, jsval aID) { - return mInner.Resolve(aContext, aID); + virtual PRBool Resolve(JSContext *aContext, JSObject *aObj, jsval aID) { + return mInner.Resolve(aContext, aObj, aID); } - virtual PRBool Convert(JSContext *aContext, jsval aID) { - return mInner.Convert(aContext, aID); + virtual PRBool Convert(JSContext *aContext, JSObject *aObj, jsval aID) { + return mInner.Convert(aContext, aObj, aID); } - virtual void Finalize(JSContext *aContext) { - mInner.Finalize(aContext); + virtual void Finalize(JSContext *aContext, JSObject *aObj) { + mInner.Finalize(aContext, aObj); } protected: diff --git a/mozilla/rdf/content/src/nsJSXULCommandDispatcher.cpp b/mozilla/rdf/content/src/nsJSXULCommandDispatcher.cpp index aa8c24d4716..82b02542959 100644 --- a/mozilla/rdf/content/src/nsJSXULCommandDispatcher.cpp +++ b/mozilla/rdf/content/src/nsJSXULCommandDispatcher.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIController.h" #include "nsIDOMElement.h" @@ -50,12 +50,6 @@ static NS_DEFINE_IID(kIXULCommandDispatcherIID, NS_IDOMXULCOMMANDDISPATCHER_IID) static NS_DEFINE_IID(kIWindowIID, NS_IDOMWINDOW_IID); static NS_DEFINE_IID(kIControllersIID, NS_ICONTROLLERS_IID); -NS_DEF_PTR(nsIController); -NS_DEF_PTR(nsIDOMElement); -NS_DEF_PTR(nsIDOMXULCommandDispatcher); -NS_DEF_PTR(nsIDOMWindow); -NS_DEF_PTR(nsIControllers); - // // XULCommandDispatcher property ids // @@ -79,56 +73,57 @@ GetXULCommandDispatcherProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case XULCOMMANDDISPATCHER_FOCUSEDELEMENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_FOCUSEDELEMENT, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_FOCUSEDELEMENT, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMElement* prop; nsresult result = NS_OK; result = a->GetFocusedElement(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case XULCOMMANDDISPATCHER_FOCUSEDWINDOW: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_FOCUSEDWINDOW, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_FOCUSEDWINDOW, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMWindow* prop; nsresult result = NS_OK; result = a->GetFocusedWindow(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -149,24 +144,25 @@ SetXULCommandDispatcherProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case XULCOMMANDDISPATCHER_FOCUSEDELEMENT: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_FOCUSEDELEMENT, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_FOCUSEDELEMENT, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMElement* prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&prop, kIElementIID, "Element", cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } a->SetFocusedElement(prop); @@ -176,15 +172,15 @@ SetXULCommandDispatcherProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v case XULCOMMANDDISPATCHER_FOCUSEDWINDOW: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_FOCUSEDWINDOW, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_FOCUSEDWINDOW, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMWindow* prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&prop, kIWindowIID, "Window", cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } a->SetFocusedWindow(prop); @@ -192,11 +188,11 @@ SetXULCommandDispatcherProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -241,48 +237,49 @@ XULCommandDispatcherAddCommandUpdater(JSContext *cx, JSObject *obj, uintN argc, { nsIDOMXULCommandDispatcher *nativeThis = (nsIDOMXULCommandDispatcher*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMElementPtr b0; + nsCOMPtr b0; nsAutoString b1; nsAutoString b2; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_ADDCOMMANDUPDATER, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_ADDCOMMANDUPDATER, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 3) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIElementIID, "Element", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } nsJSUtils::nsConvertJSValToString(b1, cx, argv[1]); nsJSUtils::nsConvertJSValToString(b2, cx, argv[2]); result = nativeThis->AddCommandUpdater(b0, b1, b2); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -300,44 +297,45 @@ XULCommandDispatcherRemoveCommandUpdater(JSContext *cx, JSObject *obj, uintN arg { nsIDOMXULCommandDispatcher *nativeThis = (nsIDOMXULCommandDispatcher*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMElementPtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_REMOVECOMMANDUPDATER, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_REMOVECOMMANDUPDATER, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIElementIID, "Element", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->RemoveCommandUpdater(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -356,37 +354,38 @@ XULCommandDispatcherUpdateCommands(JSContext *cx, JSObject *obj, uintN argc, jsv nsIDOMXULCommandDispatcher *nativeThis = (nsIDOMXULCommandDispatcher*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_UPDATECOMMANDS, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_UPDATECOMMANDS, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->UpdateCommands(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -406,41 +405,42 @@ XULCommandDispatcherGetControllerForCommand(JSContext *cx, JSObject *obj, uintN nsresult result = NS_OK; nsIController* nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_GETCONTROLLERFORCOMMAND, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_GETCONTROLLERFORCOMMAND, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->GetControllerForCommand(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } // n.b., this will release nativeRet - nsJSUtils::nsConvertXPCObjectToJSVal(nativeRet, nsIController::GetIID(), cx, rval); + nsJSUtils::nsConvertXPCObjectToJSVal(nativeRet, nsIController::GetIID(), cx, obj, rval); } return JS_TRUE; @@ -456,22 +456,6 @@ XULCommandDispatcherGetControllers(JSContext *cx, JSObject *obj, uintN argc, jsv nsIDOMXULCommandDispatcher *nativeThis = (nsIDOMXULCommandDispatcher*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsIControllers* nativeRet; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_GETCONTROLLERS, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -479,13 +463,30 @@ XULCommandDispatcherGetControllers(JSContext *cx, JSObject *obj, uintN argc, jsv { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULCOMMANDDISPATCHER_GETCONTROLLERS, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->GetControllers(&nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } // n.b., this will release nativeRet - nsJSUtils::nsConvertXPCObjectToJSVal(nativeRet, nsIControllers::GetIID(), cx, rval); + nsJSUtils::nsConvertXPCObjectToJSVal(nativeRet, nsIControllers::GetIID(), cx, obj, rval); } return JS_TRUE; diff --git a/mozilla/rdf/content/src/nsJSXULDocument.cpp b/mozilla/rdf/content/src/nsJSXULDocument.cpp index db84f7e3c22..10f5daf6313 100644 --- a/mozilla/rdf/content/src/nsJSXULDocument.cpp +++ b/mozilla/rdf/content/src/nsJSXULDocument.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMElement.h" #include "nsIDOMNode.h" @@ -50,12 +50,6 @@ static NS_DEFINE_IID(kIXULCommandDispatcherIID, NS_IDOMXULCOMMANDDISPATCHER_IID) static NS_DEFINE_IID(kIXULDocumentIID, NS_IDOMXULDOCUMENT_IID); static NS_DEFINE_IID(kINodeListIID, NS_IDOMNODELIST_IID); -NS_DEF_PTR(nsIDOMElement); -NS_DEF_PTR(nsIDOMNode); -NS_DEF_PTR(nsIDOMXULCommandDispatcher); -NS_DEF_PTR(nsIDOMXULDocument); -NS_DEF_PTR(nsIDOMNodeList); - // // XULDocument property ids // @@ -80,75 +74,76 @@ GetXULDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case XULDOCUMENT_POPUPNODE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULDOCUMENT_POPUPNODE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULDOCUMENT_POPUPNODE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNode* prop; nsresult result = NS_OK; result = a->GetPopupNode(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case XULDOCUMENT_TOOLTIPNODE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULDOCUMENT_TOOLTIPNODE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULDOCUMENT_TOOLTIPNODE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNode* prop; nsresult result = NS_OK; result = a->GetTooltipNode(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case XULDOCUMENT_COMMANDDISPATCHER: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULDOCUMENT_COMMANDDISPATCHER, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULDOCUMENT_COMMANDDISPATCHER, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMXULCommandDispatcher* prop; nsresult result = NS_OK; result = a->GetCommandDispatcher(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -169,24 +164,25 @@ SetXULDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case XULDOCUMENT_POPUPNODE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULDOCUMENT_POPUPNODE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULDOCUMENT_POPUPNODE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNode* prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&prop, kINodeIID, "Node", cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } a->SetPopupNode(prop); @@ -196,15 +192,15 @@ SetXULDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case XULDOCUMENT_TOOLTIPNODE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULDOCUMENT_TOOLTIPNODE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULDOCUMENT_TOOLTIPNODE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNode* prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&prop, kINodeIID, "Node", cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } a->SetTooltipNode(prop); @@ -212,11 +208,11 @@ SetXULDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -263,40 +259,41 @@ XULDocumentGetElementById(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, nsresult result = NS_OK; nsIDOMElement* nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULDOCUMENT_GETELEMENTBYID, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULDOCUMENT_GETELEMENTBYID, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->GetElementById(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -314,30 +311,31 @@ XULDocumentGetElementsByAttribute(JSContext *cx, JSObject *obj, uintN argc, jsva nsIDOMNodeList* nativeRet; nsAutoString b0; nsAutoString b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULDOCUMENT_GETELEMENTSBYATTRIBUTE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULDOCUMENT_GETELEMENTSBYATTRIBUTE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); @@ -345,10 +343,10 @@ XULDocumentGetElementsByAttribute(JSContext *cx, JSObject *obj, uintN argc, jsva result = nativeThis->GetElementsByAttribute(b0, b1, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; @@ -365,30 +363,31 @@ XULDocumentPersist(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval nsresult result = NS_OK; nsAutoString b0; nsAutoString b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULDOCUMENT_PERSIST, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULDOCUMENT_PERSIST, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); @@ -396,7 +395,7 @@ XULDocumentPersist(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval result = nativeThis->Persist(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; diff --git a/mozilla/rdf/content/src/nsJSXULEditorElement.cpp b/mozilla/rdf/content/src/nsJSXULEditorElement.cpp index 63bd2d38658..bb1529d3906 100644 --- a/mozilla/rdf/content/src/nsJSXULEditorElement.cpp +++ b/mozilla/rdf/content/src/nsJSXULEditorElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMXULEditorElement.h" #include "nsIEditorShell.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIXULEditorElementIID, NS_IDOMXULEDITORELEMENT_IID); static NS_DEFINE_IID(kIEditorShellIID, NS_IEDITORSHELL_IID); -NS_DEF_PTR(nsIDOMXULEditorElement); -NS_DEF_PTR(nsIEditorShell); - // // XULEditorElement property ids // @@ -69,37 +66,38 @@ GetXULEditorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case XULEDITORELEMENT_EDITORSHELL: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULEDITORELEMENT_EDITORSHELL, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULEDITORELEMENT_EDITORSHELL, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIEditorShell* prop; nsresult result = NS_OK; result = a->GetEditorShell(&prop); if (NS_SUCCEEDED(result)) { // get the js object; n.b., this will do a release on 'prop' - nsJSUtils::nsConvertXPCObjectToJSVal(prop, nsIEditorShell::GetIID(), cx, vp); + nsJSUtils::nsConvertXPCObjectToJSVal(prop, nsIEditorShell::GetIID(), cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -120,19 +118,20 @@ SetXULEditorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; diff --git a/mozilla/rdf/content/src/nsJSXULElement.cpp b/mozilla/rdf/content/src/nsJSXULElement.cpp index 51bd30107e6..cceceaadf7f 100644 --- a/mozilla/rdf/content/src/nsJSXULElement.cpp +++ b/mozilla/rdf/content/src/nsJSXULElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMElement.h" #include "nsIDOMCSSStyleDeclaration.h" @@ -54,14 +54,6 @@ static NS_DEFINE_IID(kIRDFResourceIID, NS_IRDFRESOURCE_IID); static NS_DEFINE_IID(kIControllersIID, NS_ICONTROLLERS_IID); static NS_DEFINE_IID(kINodeListIID, NS_IDOMNODELIST_IID); -NS_DEF_PTR(nsIDOMElement); -NS_DEF_PTR(nsIDOMCSSStyleDeclaration); -NS_DEF_PTR(nsIRDFCompositeDataSource); -NS_DEF_PTR(nsIDOMXULElement); -NS_DEF_PTR(nsIRDFResource); -NS_DEF_PTR(nsIControllers); -NS_DEF_PTR(nsIDOMNodeList); - // // XULElement property ids // @@ -89,18 +81,19 @@ GetXULElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case XULELEMENT_ID: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULELEMENT_ID, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULELEMENT_ID, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -109,16 +102,16 @@ GetXULElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case XULELEMENT_CLASSNAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULELEMENT_CLASSNAME, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULELEMENT_CLASSNAME, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -127,92 +120,92 @@ GetXULElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case XULELEMENT_STYLE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULELEMENT_STYLE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULELEMENT_STYLE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMCSSStyleDeclaration* prop; nsresult result = NS_OK; result = a->GetStyle(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case XULELEMENT_DATABASE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULELEMENT_DATABASE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULELEMENT_DATABASE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIRDFCompositeDataSource* prop; nsresult result = NS_OK; result = a->GetDatabase(&prop); if (NS_SUCCEEDED(result)) { // get the js object; n.b., this will do a release on 'prop' - nsJSUtils::nsConvertXPCObjectToJSVal(prop, nsIRDFCompositeDataSource::GetIID(), cx, vp); + nsJSUtils::nsConvertXPCObjectToJSVal(prop, nsIRDFCompositeDataSource::GetIID(), cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case XULELEMENT_RESOURCE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULELEMENT_RESOURCE, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULELEMENT_RESOURCE, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIRDFResource* prop; nsresult result = NS_OK; result = a->GetResource(&prop); if (NS_SUCCEEDED(result)) { // get the js object; n.b., this will do a release on 'prop' - nsJSUtils::nsConvertXPCObjectToJSVal(prop, nsIRDFResource::GetIID(), cx, vp); + nsJSUtils::nsConvertXPCObjectToJSVal(prop, nsIRDFResource::GetIID(), cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case XULELEMENT_CONTROLLERS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULELEMENT_CONTROLLERS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULELEMENT_CONTROLLERS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIControllers* prop; nsresult result = NS_OK; result = a->GetControllers(&prop); if (NS_SUCCEEDED(result)) { // get the js object; n.b., this will do a release on 'prop' - nsJSUtils::nsConvertXPCObjectToJSVal(prop, nsIControllers::GetIID(), cx, vp); + nsJSUtils::nsConvertXPCObjectToJSVal(prop, nsIControllers::GetIID(), cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -233,18 +226,19 @@ SetXULElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case XULELEMENT_ID: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULELEMENT_ID, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULELEMENT_ID, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -256,9 +250,9 @@ SetXULElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case XULELEMENT_CLASSNAME: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULELEMENT_CLASSNAME, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULELEMENT_CLASSNAME, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsJSUtils::nsConvertJSValToString(prop, cx, *vp); @@ -270,14 +264,14 @@ SetXULElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) case XULELEMENT_DATABASE: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULELEMENT_DATABASE, PR_TRUE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULELEMENT_DATABASE, PR_TRUE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIRDFCompositeDataSource* prop; if (PR_FALSE == nsJSUtils::nsConvertJSValToXPCObject((nsISupports **) &prop, kIRDFCompositeDataSourceIID, cx, *vp)) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_XPC_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_XPC_OBJECT_ERR); } a->SetDatabase(prop); @@ -285,11 +279,11 @@ SetXULElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -335,45 +329,46 @@ XULElementAddBroadcastListener(JSContext *cx, JSObject *obj, uintN argc, jsval * nsIDOMXULElement *nativeThis = (nsIDOMXULElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsAutoString b0; - nsIDOMElementPtr b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULELEMENT_ADDBROADCASTLISTENER, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b1; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULELEMENT_ADDBROADCASTLISTENER, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b1, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b1), kIElementIID, "Element", cx, argv[1])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->AddBroadcastListener(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -392,45 +387,46 @@ XULElementRemoveBroadcastListener(JSContext *cx, JSObject *obj, uintN argc, jsva nsIDOMXULElement *nativeThis = (nsIDOMXULElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsAutoString b0; - nsIDOMElementPtr b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULELEMENT_REMOVEBROADCASTLISTENER, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b1; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULELEMENT_REMOVEBROADCASTLISTENER, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b1, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b1), kIElementIID, "Element", cx, argv[1])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->RemoveBroadcastListener(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -448,22 +444,6 @@ XULElementDoCommand(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval { nsIDOMXULElement *nativeThis = (nsIDOMXULElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULELEMENT_DOCOMMAND, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -471,9 +451,26 @@ XULElementDoCommand(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULELEMENT_DOCOMMAND, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->DoCommand(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -494,30 +491,31 @@ XULElementGetElementsByAttribute(JSContext *cx, JSObject *obj, uintN argc, jsval nsIDOMNodeList* nativeRet; nsAutoString b0; nsAutoString b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULELEMENT_GETELEMENTSBYATTRIBUTE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULELEMENT_GETELEMENTSBYATTRIBUTE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); @@ -525,10 +523,10 @@ XULElementGetElementsByAttribute(JSContext *cx, JSObject *obj, uintN argc, jsval result = nativeThis->GetElementsByAttribute(b0, b1, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; diff --git a/mozilla/rdf/content/src/nsJSXULTreeElement.cpp b/mozilla/rdf/content/src/nsJSXULTreeElement.cpp index 9a8a426a793..a0a432e9bc7 100644 --- a/mozilla/rdf/content/src/nsJSXULTreeElement.cpp +++ b/mozilla/rdf/content/src/nsJSXULTreeElement.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMXULElement.h" #include "nsIDOMXULTreeElement.h" @@ -46,10 +46,6 @@ static NS_DEFINE_IID(kIXULElementIID, NS_IDOMXULELEMENT_IID); static NS_DEFINE_IID(kIXULTreeElementIID, NS_IDOMXULTREEELEMENT_IID); static NS_DEFINE_IID(kINodeListIID, NS_IDOMNODELIST_IID); -NS_DEF_PTR(nsIDOMXULElement); -NS_DEF_PTR(nsIDOMXULTreeElement); -NS_DEF_PTR(nsIDOMNodeList); - // // XULTreeElement property ids // @@ -73,56 +69,57 @@ GetXULTreeElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case XULTREEELEMENT_SELECTEDITEMS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTEDITEMS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTEDITEMS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNodeList* prop; nsresult result = NS_OK; result = a->GetSelectedItems(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } case XULTREEELEMENT_SELECTEDCELLS: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTEDCELLS, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTEDCELLS, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsIDOMNodeList* prop; nsresult result = NS_OK; result = a->GetSelectedCells(&prop); if (NS_SUCCEEDED(result)) { // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, vp); + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -143,19 +140,20 @@ SetXULTreeElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -200,44 +198,45 @@ XULTreeElementSelectItem(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMXULElementPtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTITEM, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTITEM, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIXULElementIID, "XULElement", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->SelectItem(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -255,44 +254,45 @@ XULTreeElementSelectCell(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMXULElementPtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTCELL, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTCELL, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIXULElementIID, "XULElement", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->SelectCell(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -310,22 +310,6 @@ XULTreeElementClearItemSelection(JSContext *cx, JSObject *obj, uintN argc, jsval { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_CLEARITEMSELECTION, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -333,9 +317,26 @@ XULTreeElementClearItemSelection(JSContext *cx, JSObject *obj, uintN argc, jsval { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_CLEARITEMSELECTION, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->ClearItemSelection(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -353,22 +354,6 @@ XULTreeElementClearCellSelection(JSContext *cx, JSObject *obj, uintN argc, jsval { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_CLEARCELLSELECTION, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -376,9 +361,26 @@ XULTreeElementClearCellSelection(JSContext *cx, JSObject *obj, uintN argc, jsval { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_CLEARCELLSELECTION, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->ClearCellSelection(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -396,44 +398,45 @@ XULTreeElementAddItemToSelection(JSContext *cx, JSObject *obj, uintN argc, jsval { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMXULElementPtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_ADDITEMTOSELECTION, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_ADDITEMTOSELECTION, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIXULElementIID, "XULElement", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->AddItemToSelection(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -451,44 +454,45 @@ XULTreeElementRemoveItemFromSelection(JSContext *cx, JSObject *obj, uintN argc, { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMXULElementPtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_REMOVEITEMFROMSELECTION, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_REMOVEITEMFROMSELECTION, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIXULElementIID, "XULElement", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->RemoveItemFromSelection(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -506,44 +510,45 @@ XULTreeElementAddCellToSelection(JSContext *cx, JSObject *obj, uintN argc, jsval { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMXULElementPtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_ADDCELLTOSELECTION, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_ADDCELLTOSELECTION, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIXULElementIID, "XULElement", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->AddCellToSelection(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -561,44 +566,45 @@ XULTreeElementRemoveCellFromSelection(JSContext *cx, JSObject *obj, uintN argc, { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMXULElementPtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_REMOVECELLFROMSELECTION, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_REMOVECELLFROMSELECTION, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIXULElementIID, "XULElement", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->RemoveCellFromSelection(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -616,44 +622,45 @@ XULTreeElementToggleItemSelection(JSContext *cx, JSObject *obj, uintN argc, jsva { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMXULElementPtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_TOGGLEITEMSELECTION, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_TOGGLEITEMSELECTION, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIXULElementIID, "XULElement", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->ToggleItemSelection(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -671,44 +678,45 @@ XULTreeElementToggleCellSelection(JSContext *cx, JSObject *obj, uintN argc, jsva { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMXULElementPtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_TOGGLECELLSELECTION, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_TOGGLECELLSELECTION, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIXULElementIID, "XULElement", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->ToggleCellSelection(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -726,52 +734,53 @@ XULTreeElementSelectItemRange(JSContext *cx, JSObject *obj, uintN argc, jsval *a { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMXULElementPtr b0; - nsIDOMXULElementPtr b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTITEMRANGE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; + nsCOMPtr b1; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTITEMRANGE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIXULElementIID, "XULElement", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b1, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b1), kIXULElementIID, "XULElement", cx, argv[1])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->SelectItemRange(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -789,52 +798,53 @@ XULTreeElementSelectCellRange(JSContext *cx, JSObject *obj, uintN argc, jsval *a { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMXULElementPtr b0; - nsIDOMXULElementPtr b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTCELLRANGE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; + nsCOMPtr b1; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTCELLRANGE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIXULElementIID, "XULElement", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b1, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b1), kIXULElementIID, "XULElement", cx, argv[1])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->SelectCellRange(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -852,22 +862,6 @@ XULTreeElementSelectAll(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, j { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTALL, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -875,9 +869,26 @@ XULTreeElementSelectAll(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, j { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_SELECTALL, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->SelectAll(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -895,22 +906,6 @@ XULTreeElementInvertSelection(JSContext *cx, JSObject *obj, uintN argc, jsval *a { nsIDOMXULTreeElement *nativeThis = (nsIDOMXULTreeElement*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_XULTREEELEMENT_INVERTSELECTION, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -918,9 +913,26 @@ XULTreeElementInvertSelection(JSContext *cx, JSObject *obj, uintN argc, jsval *a { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULTREEELEMENT_INVERTSELECTION, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->InvertSelection(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; diff --git a/mozilla/rdf/content/src/nsRDFGenericBuilder.cpp b/mozilla/rdf/content/src/nsRDFGenericBuilder.cpp index 5ebfa19e3cf..59af700b741 100644 --- a/mozilla/rdf/content/src/nsRDFGenericBuilder.cpp +++ b/mozilla/rdf/content/src/nsRDFGenericBuilder.cpp @@ -2988,6 +2988,7 @@ RDFGenericBuilderImpl::AddDatabasePropertyToHTMLElement(nsIContent* aElement, ns nsCOMPtr wrapper; rv = xpc->WrapNative(jscontext, + jselement, aDataBase, NS_GET_IID(nsIRDFCompositeDataSource), getter_AddRefs(wrapper)); diff --git a/mozilla/rdf/content/src/nsXULDocument.cpp b/mozilla/rdf/content/src/nsXULDocument.cpp index 3c04c27fae9..1c3f20fcaf3 100644 --- a/mozilla/rdf/content/src/nsXULDocument.cpp +++ b/mozilla/rdf/content/src/nsXULDocument.cpp @@ -3008,7 +3008,7 @@ nsXULDocument::CloneNode(PRBool aDeep, nsIDOMNode** aReturn) // PRBool -nsXULDocument::AddProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsXULDocument::AddProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { NS_NOTYETIMPLEMENTED("write me"); return PR_TRUE; @@ -3016,7 +3016,7 @@ nsXULDocument::AddProperty(JSContext *aContext, jsval aID, jsval *aVp) PRBool -nsXULDocument::DeleteProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsXULDocument::DeleteProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { NS_NOTYETIMPLEMENTED("write me"); return PR_TRUE; @@ -3024,7 +3024,7 @@ nsXULDocument::DeleteProperty(JSContext *aContext, jsval aID, jsval *aVp) PRBool -nsXULDocument::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsXULDocument::GetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { if (JSVAL_IS_STRING(aID)) { JSString *jsString = JS_ValueToString(aContext, aID); @@ -3034,7 +3034,7 @@ nsXULDocument::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) if (PL_strcmp("location", JS_GetStringBytes(jsString)) == 0) { nsCOMPtr window = do_QueryInterface(mScriptGlobalObject); if (nsnull != window) { - return window->GetProperty(aContext, aID, aVp); + return window->GetProperty(aContext, aObj, aID, aVp); } } } @@ -3044,7 +3044,7 @@ nsXULDocument::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) PRBool -nsXULDocument::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsXULDocument::SetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { nsresult rv; @@ -3084,7 +3084,7 @@ nsXULDocument::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) PRBool -nsXULDocument::EnumerateProperty(JSContext *aContext) +nsXULDocument::EnumerateProperty(JSContext *aContext, JSObject *aObj) { NS_NOTYETIMPLEMENTED("write me"); return PR_TRUE; @@ -3092,14 +3092,14 @@ nsXULDocument::EnumerateProperty(JSContext *aContext) PRBool -nsXULDocument::Resolve(JSContext *aContext, jsval aID) +nsXULDocument::Resolve(JSContext *aContext, JSObject *aObj, jsval aID) { return PR_TRUE; } PRBool -nsXULDocument::Convert(JSContext *aContext, jsval aID) +nsXULDocument::Convert(JSContext *aContext, JSObject *aObj, jsval aID) { NS_NOTYETIMPLEMENTED("write me"); return PR_TRUE; @@ -3107,7 +3107,7 @@ nsXULDocument::Convert(JSContext *aContext, jsval aID) void -nsXULDocument::Finalize(JSContext *aContext) +nsXULDocument::Finalize(JSContext *aContext, JSObject *aObj) { NS_NOTYETIMPLEMENTED("write me"); } diff --git a/mozilla/rdf/content/src/nsXULDocument.h b/mozilla/rdf/content/src/nsXULDocument.h index 2e52e627cf8..5140359689d 100644 --- a/mozilla/rdf/content/src/nsXULDocument.h +++ b/mozilla/rdf/content/src/nsXULDocument.h @@ -358,14 +358,18 @@ public: NS_IMETHOD CloneNode(PRBool aDeep, nsIDOMNode** aReturn); // 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); + virtual PRBool AddProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + virtual PRBool DeleteProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + virtual PRBool GetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + virtual PRBool SetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + virtual PRBool EnumerateProperty(JSContext *aContext, JSObject *aObj); + virtual PRBool Resolve(JSContext *aContext, JSObject *aObj, jsval aID); + virtual PRBool Convert(JSContext *aContext, JSObject *aObj, jsval aID); + virtual void Finalize(JSContext *aContext, JSObject *aObj); // nsIScriptObjectOwner interface NS_IMETHOD GetScriptObject(nsIScriptContext *aContext, void** aScriptObject); diff --git a/mozilla/rdf/content/src/nsXULElement.cpp b/mozilla/rdf/content/src/nsXULElement.cpp index 7ca551e32c8..8698410df2d 100644 --- a/mozilla/rdf/content/src/nsXULElement.cpp +++ b/mozilla/rdf/content/src/nsXULElement.cpp @@ -1589,34 +1589,34 @@ nsXULElement::SetCompiledEventHandler(nsIAtom *aName, void* aHandler) // nsIJSScriptObject interface PRBool -nsXULElement::AddProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsXULElement::AddProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { NS_NOTYETIMPLEMENTED("write me"); return PR_FALSE; } PRBool -nsXULElement::DeleteProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsXULElement::DeleteProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { NS_NOTYETIMPLEMENTED("write me"); return PR_FALSE; } PRBool -nsXULElement::GetProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsXULElement::GetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { return PR_TRUE; } PRBool -nsXULElement::SetProperty(JSContext *aContext, jsval aID, jsval *aVp) +nsXULElement::SetProperty(JSContext *aContext, JSObject *aObj, jsval aID, jsval *aVp) { NS_NOTYETIMPLEMENTED("write me"); return PR_FALSE; } PRBool -nsXULElement::EnumerateProperty(JSContext *aContext) +nsXULElement::EnumerateProperty(JSContext *aContext, JSObject *aObj) { NS_NOTYETIMPLEMENTED("write me"); return PR_FALSE; @@ -1624,14 +1624,14 @@ nsXULElement::EnumerateProperty(JSContext *aContext) PRBool -nsXULElement::Resolve(JSContext *aContext, jsval aID) +nsXULElement::Resolve(JSContext *aContext, JSObject *aObj, jsval aID) { return PR_TRUE; } PRBool -nsXULElement::Convert(JSContext *aContext, jsval aID) +nsXULElement::Convert(JSContext *aContext, JSObject *aObj, jsval aID) { NS_NOTYETIMPLEMENTED("write me"); return PR_FALSE; @@ -1639,7 +1639,7 @@ nsXULElement::Convert(JSContext *aContext, jsval aID) void -nsXULElement::Finalize(JSContext *aContext) +nsXULElement::Finalize(JSContext *aContext, JSObject *aObj) { NS_NOTYETIMPLEMENTED("write me"); } diff --git a/mozilla/rdf/content/src/nsXULElement.h b/mozilla/rdf/content/src/nsXULElement.h index 91d47f10d6b..d69ba52066a 100644 --- a/mozilla/rdf/content/src/nsXULElement.h +++ b/mozilla/rdf/content/src/nsXULElement.h @@ -458,14 +458,18 @@ public: NS_IMETHOD SetCompiledEventHandler(nsIAtom *aName, void* aHandler); // 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); + virtual PRBool AddProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + virtual PRBool DeleteProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + virtual PRBool GetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + virtual PRBool SetProperty(JSContext *aContext, JSObject *aObj, + jsval aID, jsval *aVp); + virtual PRBool EnumerateProperty(JSContext *aContext, JSObject *aObj); + virtual PRBool Resolve(JSContext *aContext, JSObject *aObj, jsval aID); + virtual PRBool Convert(JSContext *aContext, JSObject *aObj, jsval aID); + virtual void Finalize(JSContext *aContext, JSObject *aObj); // nsIStyleRule interface. The node implements this to deal with attributes that // need to be mapped into style contexts (e.g., width in treecols). diff --git a/mozilla/rdf/content/src/nsXULTemplateBuilder.cpp b/mozilla/rdf/content/src/nsXULTemplateBuilder.cpp index 5ebfa19e3cf..59af700b741 100644 --- a/mozilla/rdf/content/src/nsXULTemplateBuilder.cpp +++ b/mozilla/rdf/content/src/nsXULTemplateBuilder.cpp @@ -2988,6 +2988,7 @@ RDFGenericBuilderImpl::AddDatabasePropertyToHTMLElement(nsIContent* aElement, ns nsCOMPtr wrapper; rv = xpc->WrapNative(jscontext, + jselement, aDataBase, NS_GET_IID(nsIRDFCompositeDataSource), getter_AddRefs(wrapper)); diff --git a/mozilla/xpfe/AppCores/src/nsJSAppCoresManager.cpp b/mozilla/xpfe/AppCores/src/nsJSAppCoresManager.cpp index 221c88c7eef..17245edf51f 100644 --- a/mozilla/xpfe/AppCores/src/nsJSAppCoresManager.cpp +++ b/mozilla/xpfe/AppCores/src/nsJSAppCoresManager.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMAppCoresManager.h" #include "nsIDOMBaseAppCore.h" @@ -44,9 +44,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIAppCoresManagerIID, NS_IDOMAPPCORESMANAGER_IID); static NS_DEFINE_IID(kIBaseAppCoreIID, NS_IDOMBASEAPPCORE_IID); -NS_DEF_PTR(nsIDOMAppCoresManager); -NS_DEF_PTR(nsIDOMBaseAppCore); - /***********************************************************************/ // @@ -63,19 +60,20 @@ GetAppCoresManagerProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -96,19 +94,20 @@ SetAppCoresManagerProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -153,22 +152,6 @@ AppCoresManagerStartup(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, js { nsIDOMAppCoresManager *nativeThis = (nsIDOMAppCoresManager*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_APPCORESMANAGER_STARTUP, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -176,9 +159,26 @@ AppCoresManagerStartup(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, js { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_APPCORESMANAGER_STARTUP, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Startup(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -196,22 +196,6 @@ AppCoresManagerShutdown(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, j { nsIDOMAppCoresManager *nativeThis = (nsIDOMAppCoresManager*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_APPCORESMANAGER_SHUTDOWN, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; @@ -219,9 +203,26 @@ AppCoresManagerShutdown(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, j { + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_APPCORESMANAGER_SHUTDOWN, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + + result = nativeThis->Shutdown(); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -239,44 +240,45 @@ AppCoresManagerAdd(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval { nsIDOMAppCoresManager *nativeThis = (nsIDOMAppCoresManager*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMBaseAppCorePtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_APPCORESMANAGER_ADD, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_APPCORESMANAGER_ADD, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIBaseAppCoreIID, "BaseAppCore", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->Add(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -294,44 +296,45 @@ AppCoresManagerRemove(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsv { nsIDOMAppCoresManager *nativeThis = (nsIDOMAppCoresManager*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMBaseAppCorePtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_APPCORESMANAGER_REMOVE, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_APPCORESMANAGER_REMOVE, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIBaseAppCoreIID, "BaseAppCore", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->Remove(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -351,40 +354,41 @@ AppCoresManagerFind(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval nsresult result = NS_OK; nsIDOMBaseAppCore* nativeRet; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_APPCORESMANAGER_FIND, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_APPCORESMANAGER_FIND, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->Find(b0, &nativeRet); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } return JS_TRUE; diff --git a/mozilla/xpfe/AppCores/src/nsJSBaseAppCore.cpp b/mozilla/xpfe/AppCores/src/nsJSBaseAppCore.cpp index 89e7d8a30cd..7c52f85b787 100644 --- a/mozilla/xpfe/AppCores/src/nsJSBaseAppCore.cpp +++ b/mozilla/xpfe/AppCores/src/nsJSBaseAppCore.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMBaseAppCore.h" #include "nsIScriptNameSpaceManager.h" @@ -46,8 +46,6 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIBaseAppCoreIID, NS_IDOMBASEAPPCORE_IID); -NS_DEF_PTR(nsIDOMBaseAppCore); - // // BaseAppCore property ids // @@ -70,18 +68,19 @@ GetBaseAppCoreProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case BASEAPPCORE_ID: { PRBool ok = PR_FALSE; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_BASEAPPCORE_ID, PR_FALSE, &ok); + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_BASEAPPCORE_ID, PR_FALSE, &ok); if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); } nsAutoString prop; nsresult result = NS_OK; @@ -90,16 +89,16 @@ GetBaseAppCoreProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); } else { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -120,19 +119,20 @@ SetBaseAppCoreProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -178,37 +178,38 @@ BaseAppCoreInit(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rv nsIDOMBaseAppCore *nativeThis = (nsIDOMBaseAppCore*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_BASEAPPCORE_INIT, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_BASEAPPCORE_INIT, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->Init(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -227,37 +228,38 @@ BaseAppCoreSetDocumentCharset(JSContext *cx, JSObject *obj, uintN argc, jsval *a nsIDOMBaseAppCore *nativeThis = (nsIDOMBaseAppCore*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsAutoString b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_BASEAPPCORE_SETDOCUMENTCHARSET, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_BASEAPPCORE_SETDOCUMENTCHARSET, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); result = nativeThis->SetDocumentCharset(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -314,8 +316,6 @@ BaseAppCore(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsresult result; nsIID classID; - nsIScriptContext* context = (nsIScriptContext*)JS_GetContextPrivate(cx); - nsIScriptNameSpaceManager* manager; nsIDOMBaseAppCore *nativeThis; nsIScriptObjectOwner *owner = nsnull; nsIJSNativeInitializer* initializer = nsnull; @@ -323,13 +323,19 @@ BaseAppCore(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) static NS_DEFINE_IID(kIDOMBaseAppCoreIID, NS_IDOMBASEAPPCORE_IID); static NS_DEFINE_IID(kIJSNativeInitializerIID, NS_IJSNATIVEINITIALIZER_IID); - result = context->GetNameSpaceManager(&manager); - if (NS_OK != result) { + nsCOMPtr scriptCX; + nsJSUtils::nsGetStaticScriptContext(cx, obj, getter_AddRefs(scriptCX)); + if (!scriptCX) { + return JS_FALSE; + } + + nsCOMPtr manager; + scriptCX->GetNameSpaceManager(getter_AddRefs(manager)); + if (!manager) { return JS_FALSE; } result = manager->LookupName("BaseAppCore", PR_TRUE, classID); - NS_RELEASE(manager); if (NS_OK != result) { return JS_FALSE; } @@ -344,7 +350,7 @@ BaseAppCore(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) result = nativeThis->QueryInterface(kIJSNativeInitializerIID, (void **)&initializer); if (NS_OK == result) { - result = initializer->Initialize(cx, argc, argv); + result = initializer->Initialize(cx, obj, argc, argv); NS_RELEASE(initializer); if (NS_OK != result) { diff --git a/mozilla/xpfe/AppCores/src/nsJSToolkitCore.cpp b/mozilla/xpfe/AppCores/src/nsJSToolkitCore.cpp index bc8c4a998d9..d3ea517e0f9 100644 --- a/mozilla/xpfe/AppCores/src/nsJSToolkitCore.cpp +++ b/mozilla/xpfe/AppCores/src/nsJSToolkitCore.cpp @@ -25,6 +25,7 @@ #include "nsJSUtils.h" #include "nsDOMError.h" #include "nscore.h" +#include "nsIServiceManager.h" #include "nsIScriptContext.h" #include "nsIScriptSecurityManager.h" #include "nsIJSScriptObject.h" @@ -32,7 +33,6 @@ #include "nsIScriptGlobalObject.h" #include "nsCOMPtr.h" #include "nsDOMPropEnums.h" -#include "nsIPtr.h" #include "nsString.h" #include "nsIDOMToolkitCore.h" #include "nsIDOMWindow.h" @@ -48,9 +48,6 @@ static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); static NS_DEFINE_IID(kIToolkitCoreIID, NS_IDOMTOOLKITCORE_IID); static NS_DEFINE_IID(kIWindowIID, NS_IDOMWINDOW_IID); -NS_DEF_PTR(nsIDOMToolkitCore); -NS_DEF_PTR(nsIDOMWindow); - /***********************************************************************/ // @@ -67,19 +64,20 @@ GetToolkitCoreProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -100,19 +98,20 @@ SetToolkitCoreProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } if (JSVAL_IS_INT(id)) { - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); } switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -158,45 +157,46 @@ ToolkitCoreShowDialog(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsv nsIDOMToolkitCore *nativeThis = (nsIDOMToolkitCore*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsAutoString b0; - nsIDOMWindowPtr b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_TOOLKITCORE_SHOWDIALOG, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b1; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_TOOLKITCORE_SHOWDIALOG, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b1, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b1), kIWindowIID, "Window", cx, argv[1])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->ShowDialog(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -215,45 +215,46 @@ ToolkitCoreShowWindow(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsv nsIDOMToolkitCore *nativeThis = (nsIDOMToolkitCore*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsAutoString b0; - nsIDOMWindowPtr b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_TOOLKITCORE_SHOWWINDOW, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b1; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_TOOLKITCORE_SHOWWINDOW, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b1, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b1), kIWindowIID, "Window", cx, argv[1])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->ShowWindow(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -272,47 +273,48 @@ ToolkitCoreShowWindowWithArgs(JSContext *cx, JSObject *obj, uintN argc, jsval *a nsIDOMToolkitCore *nativeThis = (nsIDOMToolkitCore*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsAutoString b0; - nsIDOMWindowPtr b1; + nsCOMPtr b1; nsAutoString b2; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_TOOLKITCORE_SHOWWINDOWWITHARGS, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_TOOLKITCORE_SHOWWINDOWWITHARGS, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 3) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b1, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b1), kIWindowIID, "Window", cx, argv[1])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } nsJSUtils::nsConvertJSValToString(b2, cx, argv[2]); result = nativeThis->ShowWindowWithArgs(b0, b1, b2); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -331,45 +333,46 @@ ToolkitCoreShowModalDialog(JSContext *cx, JSObject *obj, uintN argc, jsval *argv nsIDOMToolkitCore *nativeThis = (nsIDOMToolkitCore*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; nsAutoString b0; - nsIDOMWindowPtr b1; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_TOOLKITCORE_SHOWMODALDIALOG, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b1; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_TOOLKITCORE_SHOWMODALDIALOG, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 2) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]); - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b1, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b1), kIWindowIID, "Window", cx, argv[1])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->ShowModalDialog(b0, b1); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -387,44 +390,45 @@ ToolkitCoreCloseWindow(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, js { nsIDOMToolkitCore *nativeThis = (nsIDOMToolkitCore*)nsJSUtils::nsGetNativeThis(cx, obj); nsresult result = NS_OK; - nsIDOMWindowPtr b0; - - *rval = JSVAL_NULL; - - nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx); - nsCOMPtr secMan; - if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECMAN_ERR); - } - { - PRBool ok; - secMan->CheckScriptAccess(scriptCX, obj, NS_DOM_PROP_TOOLKITCORE_CLOSEWINDOW, PR_FALSE, &ok); - if (!ok) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR); - } - } - + nsCOMPtr b0; // If there's no private data, this must be the prototype, so ignore if (nsnull == nativeThis) { return JS_TRUE; } { + + *rval = JSVAL_NULL; + + { + PRBool ok; + nsresult rv; + NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, + NS_SCRIPTSECURITYMANAGER_PROGID, &rv); + if (NS_FAILED(rv)) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); + } + secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_TOOLKITCORE_CLOSEWINDOW, PR_FALSE, &ok); + if (!ok) { + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR); + } + } + if (argc < 1) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR); } - if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0), kIWindowIID, "Window", cx, argv[0])) { - return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_NOT_OBJECT_ERR); + return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); } result = nativeThis->CloseWindow(b0); if (NS_FAILED(result)) { - return nsJSUtils::nsReportError(cx, result); + return nsJSUtils::nsReportError(cx, obj, result); } *rval = JSVAL_VOID; @@ -483,8 +487,6 @@ ToolkitCore(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { nsresult result; nsIID classID; - nsIScriptContext* context = (nsIScriptContext*)JS_GetContextPrivate(cx); - nsIScriptNameSpaceManager* manager; nsIDOMToolkitCore *nativeThis; nsIScriptObjectOwner *owner = nsnull; nsIJSNativeInitializer* initializer = nsnull; @@ -492,13 +494,19 @@ ToolkitCore(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) static NS_DEFINE_IID(kIDOMToolkitCoreIID, NS_IDOMTOOLKITCORE_IID); static NS_DEFINE_IID(kIJSNativeInitializerIID, NS_IJSNATIVEINITIALIZER_IID); - result = context->GetNameSpaceManager(&manager); - if (NS_OK != result) { + nsCOMPtr scriptCX; + nsJSUtils::nsGetStaticScriptContext(cx, obj, getter_AddRefs(scriptCX)); + if (!scriptCX) { + return JS_FALSE; + } + + nsCOMPtr manager; + scriptCX->GetNameSpaceManager(getter_AddRefs(manager)); + if (!manager) { return JS_FALSE; } result = manager->LookupName("ToolkitCore", PR_TRUE, classID); - NS_RELEASE(manager); if (NS_OK != result) { return JS_FALSE; } @@ -513,7 +521,7 @@ ToolkitCore(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) result = nativeThis->QueryInterface(kIJSNativeInitializerIID, (void **)&initializer); if (NS_OK == result) { - result = initializer->Initialize(cx, argc, argv); + result = initializer->Initialize(cx, obj, argc, argv); NS_RELEASE(initializer); if (NS_OK != result) { diff --git a/mozilla/xpfe/appshell/src/nsJSXPConnectFactory.cpp b/mozilla/xpfe/appshell/src/nsJSXPConnectFactory.cpp index f83e5b77121..658f6980da6 100644 --- a/mozilla/xpfe/appshell/src/nsJSXPConnectFactory.cpp +++ b/mozilla/xpfe/appshell/src/nsJSXPConnectFactory.cpp @@ -57,11 +57,11 @@ GetXPConnectFactoryProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -85,11 +85,11 @@ SetXPConnectFactoryProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) switch(JSVAL_TO_INT(id)) { case 0: default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -152,7 +152,7 @@ XPConnectFactoryCreateInstance(JSContext *cx, JSObject *obj, uintN argc, jsval * return JS_FALSE; } - nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval); + nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval); } else { JS_ReportError(cx, "Function createInstance requires 1 parameters"); diff --git a/mozilla/xpfe/components/directory/nsDirectoryViewer.cpp b/mozilla/xpfe/components/directory/nsDirectoryViewer.cpp index 94b05f4577c..b757e1ea593 100644 --- a/mozilla/xpfe/components/directory/nsDirectoryViewer.cpp +++ b/mozilla/xpfe/components/directory/nsDirectoryViewer.cpp @@ -341,6 +341,7 @@ nsHTTPIndexParser::OnStartRequest(nsIChannel* aChannel, nsISupports* aContext) NS_ENSURE_TRUE(context, NS_ERROR_FAILURE); JSContext* jscontext = NS_REINTERPRET_CAST(JSContext*, context->GetNativeContext()); + JSObject* global = JS_GetGlobalObject(jscontext); // Using XPConnect, wrap the HTTP index object... static NS_DEFINE_CID(kXPConnectCID, NS_XPCONNECT_CID); @@ -349,6 +350,7 @@ nsHTTPIndexParser::OnStartRequest(nsIChannel* aChannel, nsISupports* aContext) nsCOMPtr wrapper; rv = xpc->WrapNative(jscontext, + global, httpindex, nsCOMTypeInfo::GetIID(), getter_AddRefs(wrapper)); @@ -365,7 +367,6 @@ nsHTTPIndexParser::OnStartRequest(nsIChannel* aChannel, nsISupports* aContext) // ...and stuff it into the global context PRBool ok; - JSObject* global = JS_GetGlobalObject(jscontext); ok = JS_SetProperty(jscontext, global, "HTTPIndex", &jslistener); NS_ASSERTION(ok, "unable to set Listener property"); diff --git a/mozilla/xpfe/components/sample/src/nsSampleAppShellComponent.cpp b/mozilla/xpfe/components/sample/src/nsSampleAppShellComponent.cpp index e31eb6da360..87438354f5a 100644 --- a/mozilla/xpfe/components/sample/src/nsSampleAppShellComponent.cpp +++ b/mozilla/xpfe/components/sample/src/nsSampleAppShellComponent.cpp @@ -119,6 +119,7 @@ nsSampleAppShellComponent::DoDialogTests( nsISupports *parent, nsIObserver *obse if ( NS_SUCCEEDED( rv ) ) { nsCOMPtr wrapper; rv = xpc->WrapNative( jsContext, + JS_GetGlobalObject(jsContext), observer, nsIObserver::GetIID(), getter_AddRefs( wrapper ) ); diff --git a/mozilla/xpinstall/src/nsJSInstallVersion.cpp b/mozilla/xpinstall/src/nsJSInstallVersion.cpp index 088072a2f52..ba2f401e5ac 100644 --- a/mozilla/xpinstall/src/nsJSInstallVersion.cpp +++ b/mozilla/xpinstall/src/nsJSInstallVersion.cpp @@ -136,11 +136,11 @@ GetInstallVersionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } return PR_TRUE; @@ -227,11 +227,11 @@ SetInstallVersionProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) break; } default: - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } } else { - return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, id, vp); + return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } return PR_TRUE;