From 191411b358e4f16da2b43aa1f5d1359a20295c5e Mon Sep 17 00:00:00 2001 From: "jband%netscape.com" Date: Sat, 18 Dec 1999 20:29:29 +0000 Subject: [PATCH] Landing big set of DOM and XPConnect changes: DOM: getting rid of JS_GetContextPrivate wherever possible. Use static parent links where we can. When we do need to find this info about the caller we call a function that knows how to get that info rather than inline calls to JS_GetContextPrivate. This is all required for calling DOM objects on non-DOM JSContexts as we do via xpconnect. XPConnect: basic refactoring work to disassociate wrappers from the JSContext that was active when the wrapper was constructed. This allows for calling into wrapped JS objects on the right JSContext and for proper grouping of wrapped native objects so that they can share proto objects. This also allows for better sharing of objects and lays the foundations for threadsafety and interface flattening. Also, xpconnect tests are reorganized and improved. fixes bugs: 13419, 17736, 17746, 17952, 22086 r=vidur r=mccabe r=norris r=cbegle a=chofmann git-svn-id: svn://10.0.0.236/trunk@56202 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/allmakefiles.sh | 1 + mozilla/caps/idl/nsIScriptSecurityManager.idl | 14 +- mozilla/caps/src/nsScriptSecurityManager.cpp | 9 +- mozilla/content/base/src/nsDocument.cpp | 58 +- mozilla/content/base/src/nsDocument.h | 20 +- mozilla/content/base/src/nsGenericElement.cpp | 54 +- mozilla/content/base/src/nsGenericElement.h | 20 +- .../html/content/src/nsHTMLFormElement.cpp | 73 +- .../html/content/src/nsHTMLImageElement.cpp | 131 +- .../html/content/src/nsHTMLOptionElement.cpp | 4 +- .../html/content/src/nsHTMLSelectElement.cpp | 36 +- .../html/document/src/nsHTMLDocument.cpp | 69 +- .../html/document/src/nsHTMLDocument.h | 2 +- .../content/xml/content/src/nsXMLElement.h | 32 +- .../content/xul/content/src/nsXULElement.cpp | 16 +- .../content/xul/content/src/nsXULElement.h | 20 +- .../xul/document/src/nsXULDocument.cpp | 18 +- .../content/xul/document/src/nsXULDocument.h | 20 +- .../templates/src/nsXULTemplateBuilder.cpp | 1 + mozilla/dom/public/idl/coreDom/makefile.win | 4 +- mozilla/dom/public/nsIJSNativeInitializer.h | 5 +- mozilla/dom/public/nsIJSScriptObject.h | 18 +- mozilla/dom/src/base/nsGlobalWindow.cpp | 108 +- mozilla/dom/src/base/nsGlobalWindow.h | 36 +- mozilla/dom/src/base/nsJSBarProp.cpp | 42 +- mozilla/dom/src/base/nsJSDOMException.cpp | 89 +- mozilla/dom/src/base/nsJSEnvironment.cpp | 115 +- mozilla/dom/src/base/nsJSHistory.cpp | 159 +- mozilla/dom/src/base/nsJSLocation.cpp | 222 +-- mozilla/dom/src/base/nsJSMimeType.cpp | 57 +- mozilla/dom/src/base/nsJSMimeTypeArray.cpp | 125 +- mozilla/dom/src/base/nsJSNavigator.cpp | 195 +- mozilla/dom/src/base/nsJSPlugin.cpp | 143 +- mozilla/dom/src/base/nsJSPluginArray.cpp | 164 +- mozilla/dom/src/base/nsJSScreen.cpp | 78 +- mozilla/dom/src/base/nsJSUtils.cpp | 189 +- mozilla/dom/src/base/nsJSUtils.h | 24 +- mozilla/dom/src/base/nsJSWindow.cpp | 1697 +++++++++-------- mozilla/dom/src/base/nsJSWindowCollection.cpp | 125 +- mozilla/dom/src/base/nsLocation.cpp | 56 +- mozilla/dom/src/coreDOM/nsJSAttr.cpp | 52 +- mozilla/dom/src/coreDOM/nsJSCDATASection.cpp | 30 +- mozilla/dom/src/coreDOM/nsJSCharacterData.cpp | 245 +-- mozilla/dom/src/coreDOM/nsJSComment.cpp | 30 +- .../dom/src/coreDOM/nsJSDOMImplementation.cpp | 67 +- mozilla/dom/src/coreDOM/nsJSDocument.cpp | 535 +++--- .../dom/src/coreDOM/nsJSDocumentFragment.cpp | 30 +- mozilla/dom/src/coreDOM/nsJSDocumentType.cpp | 53 +- mozilla/dom/src/coreDOM/nsJSElement.cpp | 352 ++-- mozilla/dom/src/coreDOM/nsJSEntity.cpp | 48 +- .../dom/src/coreDOM/nsJSEntityReference.cpp | 30 +- mozilla/dom/src/coreDOM/nsJSNamedNodeMap.cpp | 203 +- mozilla/dom/src/coreDOM/nsJSNode.cpp | 495 ++--- mozilla/dom/src/coreDOM/nsJSNodeList.cpp | 80 +- mozilla/dom/src/coreDOM/nsJSNotation.cpp | 42 +- .../src/coreDOM/nsJSProcessingInstruction.cpp | 46 +- mozilla/dom/src/coreDOM/nsJSStyleSheet.cpp | 54 +- .../src/coreDOM/nsJSStyleSheetCollection.cpp | 80 +- mozilla/dom/src/coreDOM/nsJSText.cpp | 71 +- mozilla/dom/src/css/nsJSCSS2Properties.cpp | 1260 ++++++------ mozilla/dom/src/css/nsJSCSSFontFaceRule.cpp | 45 +- mozilla/dom/src/css/nsJSCSSImportRule.cpp | 59 +- mozilla/dom/src/css/nsJSCSSMediaRule.cpp | 127 +- mozilla/dom/src/css/nsJSCSSPageRule.cpp | 55 +- mozilla/dom/src/css/nsJSCSSRule.cpp | 55 +- .../dom/src/css/nsJSCSSStyleDeclaration.cpp | 196 +- mozilla/dom/src/css/nsJSCSSStyleRule.cpp | 55 +- .../src/css/nsJSCSSStyleRuleCollection.cpp | 80 +- mozilla/dom/src/css/nsJSCSSStyleSheet.cpp | 153 +- mozilla/dom/src/css/nsJSCSSUnknownRule.cpp | 30 +- .../dom/src/events/nsJSDOMEventListener.cpp | 14 +- mozilla/dom/src/events/nsJSEvent.cpp | 217 +-- mozilla/dom/src/events/nsJSKeyEvent.cpp | 251 ++- mozilla/dom/src/events/nsJSUIEvent.cpp | 178 +- .../dom/src/html/nsJSHTMLAnchorElement.cpp | 222 +-- .../dom/src/html/nsJSHTMLAppletElement.cpp | 140 +- mozilla/dom/src/html/nsJSHTMLAreaElement.cpp | 114 +- mozilla/dom/src/html/nsJSHTMLBRElement.cpp | 40 +- mozilla/dom/src/html/nsJSHTMLBaseElement.cpp | 50 +- .../dom/src/html/nsJSHTMLBaseFontElement.cpp | 60 +- mozilla/dom/src/html/nsJSHTMLBodyElement.cpp | 90 +- .../dom/src/html/nsJSHTMLButtonElement.cpp | 186 +- mozilla/dom/src/html/nsJSHTMLCollection.cpp | 125 +- mozilla/dom/src/html/nsJSHTMLDListElement.cpp | 42 +- .../dom/src/html/nsJSHTMLDirectoryElement.cpp | 42 +- mozilla/dom/src/html/nsJSHTMLDivElement.cpp | 40 +- mozilla/dom/src/html/nsJSHTMLDocument.cpp | 766 ++++---- mozilla/dom/src/html/nsJSHTMLElement.cpp | 89 +- mozilla/dom/src/html/nsJSHTMLEmbedElement.cpp | 107 +- .../dom/src/html/nsJSHTMLFieldSetElement.cpp | 39 +- mozilla/dom/src/html/nsJSHTMLFontElement.cpp | 60 +- mozilla/dom/src/html/nsJSHTMLFormElement.cpp | 293 +-- mozilla/dom/src/html/nsJSHTMLFrameElement.cpp | 112 +- .../dom/src/html/nsJSHTMLFrameSetElement.cpp | 50 +- mozilla/dom/src/html/nsJSHTMLHRElement.cpp | 72 +- mozilla/dom/src/html/nsJSHTMLHeadElement.cpp | 40 +- .../dom/src/html/nsJSHTMLHeadingElement.cpp | 40 +- mozilla/dom/src/html/nsJSHTMLHtmlElement.cpp | 40 +- .../dom/src/html/nsJSHTMLIFrameElement.cpp | 130 +- mozilla/dom/src/html/nsJSHTMLImageElement.cpp | 169 +- mozilla/dom/src/html/nsJSHTMLInputElement.cpp | 379 ++-- .../dom/src/html/nsJSHTMLIsIndexElement.cpp | 49 +- mozilla/dom/src/html/nsJSHTMLLIElement.cpp | 52 +- mozilla/dom/src/html/nsJSHTMLLabelElement.cpp | 59 +- mozilla/dom/src/html/nsJSHTMLLayerElement.cpp | 115 +- .../dom/src/html/nsJSHTMLLegendElement.cpp | 59 +- mozilla/dom/src/html/nsJSHTMLLinkElement.cpp | 122 +- mozilla/dom/src/html/nsJSHTMLMapElement.cpp | 49 +- mozilla/dom/src/html/nsJSHTMLMenuElement.cpp | 42 +- mozilla/dom/src/html/nsJSHTMLMetaElement.cpp | 70 +- mozilla/dom/src/html/nsJSHTMLModElement.cpp | 50 +- mozilla/dom/src/html/nsJSHTMLOListElement.cpp | 64 +- .../dom/src/html/nsJSHTMLObjectElement.cpp | 213 +-- .../dom/src/html/nsJSHTMLOptGroupElement.cpp | 52 +- .../dom/src/html/nsJSHTMLOptionElement.cpp | 130 +- .../dom/src/html/nsJSHTMLParagraphElement.cpp | 40 +- mozilla/dom/src/html/nsJSHTMLParamElement.cpp | 70 +- mozilla/dom/src/html/nsJSHTMLPreElement.cpp | 42 +- mozilla/dom/src/html/nsJSHTMLQuoteElement.cpp | 40 +- .../dom/src/html/nsJSHTMLScriptElement.cpp | 102 +- .../dom/src/html/nsJSHTMLSelectElement.cpp | 354 ++-- mozilla/dom/src/html/nsJSHTMLStyleElement.cpp | 62 +- .../src/html/nsJSHTMLTableCaptionElement.cpp | 40 +- .../dom/src/html/nsJSHTMLTableCellElement.cpp | 188 +- .../dom/src/html/nsJSHTMLTableColElement.cpp | 92 +- mozilla/dom/src/html/nsJSHTMLTableElement.cpp | 478 ++--- .../dom/src/html/nsJSHTMLTableRowElement.cpp | 200 +- .../src/html/nsJSHTMLTableSectionElement.cpp | 160 +- .../dom/src/html/nsJSHTMLTextAreaElement.cpp | 262 +-- mozilla/dom/src/html/nsJSHTMLTitleElement.cpp | 40 +- mozilla/dom/src/html/nsJSHTMLUListElement.cpp | 52 +- mozilla/dom/src/range/nsJSRange.cpp | 866 ++++----- mozilla/dom/src/range/nsJSSelection.cpp | 624 +++--- .../dom/src/range/nsJSSelectionListener.cpp | 65 +- .../dom/src/xul/nsJSXULCommandDispatcher.cpp | 261 +-- mozilla/dom/src/xul/nsJSXULDocument.cpp | 185 +- mozilla/dom/src/xul/nsJSXULElement.cpp | 254 ++- mozilla/dom/src/xul/nsJSXULTreeElement.cpp | 630 +++--- mozilla/dom/tools/FileGen.h | 2 +- mozilla/dom/tools/JSStubGen.cpp | 150 +- mozilla/js/src/xpconnect/idl/MANIFEST | 10 +- mozilla/js/src/xpconnect/idl/Makefile.in | 11 +- mozilla/js/src/xpconnect/idl/makefile.win | 11 +- mozilla/js/src/xpconnect/idl/nsIXPConnect.idl | 268 +++ .../xpconnect/loader/mozJSComponentLoader.cpp | 6 +- mozilla/js/src/xpconnect/public/MANIFEST | 2 - mozilla/js/src/xpconnect/public/Makefile.in | 2 - mozilla/js/src/xpconnect/public/makefile.win | 2 - .../src/xpconnect/public/nsIXPCScriptable.h | 189 +- .../js/src/xpconnect/public/nsIXPConnect.h | 313 --- mozilla/js/src/xpconnect/shell/xpcshell.cpp | 26 +- mozilla/js/src/xpconnect/src/Makefile.in | 2 + mozilla/js/src/xpconnect/src/makefile.win | 4 +- mozilla/js/src/xpconnect/src/nsXPConnect.cpp | 816 ++++---- .../js/src/xpconnect/src/xpccomponents.cpp | 79 +- mozilla/js/src/xpconnect/src/xpccontext.cpp | 241 +-- mozilla/js/src/xpconnect/src/xpcconvert.cpp | 16 +- mozilla/js/src/xpconnect/src/xpcforwards.h | 11 +- mozilla/js/src/xpconnect/src/xpcjsid.cpp | 8 +- mozilla/js/src/xpconnect/src/xpcjsruntime.cpp | 273 +++ mozilla/js/src/xpconnect/src/xpclog.cpp | 10 +- .../js/src/xpconnect/{public => src}/xpclog.h | 10 +- mozilla/js/src/xpconnect/src/xpcmodule.cpp | 2 +- .../xpconnect/src/xpcnativecallcontext.cpp | 14 +- mozilla/js/src/xpconnect/src/xpcprivate.h | 892 ++++----- mozilla/js/src/xpconnect/src/xpcthrower.cpp | 6 +- mozilla/js/src/xpconnect/src/xpcwrappedjs.cpp | 75 +- .../src/xpconnect/src/xpcwrappedjsclass.cpp | 147 +- .../js/src/xpconnect/src/xpcwrappednative.cpp | 105 +- .../xpconnect/src/xpcwrappednativeclass.cpp | 157 +- .../xpconnect/src/xpcwrappednativejsops.cpp | 53 +- .../xpconnect/src/xpcwrappednativescope.cpp | 187 ++ mozilla/js/src/xpconnect/tests/Makefile.in | 15 +- mozilla/js/src/xpconnect/tests/TestXPC.cpp | 1296 +++---------- .../tests/components/xpctest_attributes.cpp | 7 +- .../tests/components/xpctest_calljs.cpp | 9 +- .../tests/components/xpctest_child.cpp | 3 +- .../tests/components/xpctest_const.cpp | 3 +- .../tests/components/xpctest_echo.cpp | 11 +- .../xpconnect/tests/components/xpctest_in.cpp | 3 +- .../tests/components/xpctest_inout.cpp | 3 +- .../tests/components/xpctest_module.cpp | 2 +- .../tests/components/xpctest_multiple.cpp | 6 +- .../tests/components/xpctest_out.cpp | 3 +- .../tests/components/xpctest_overloaded.cpp | 6 +- .../tests/components/xpctest_string.cpp | 3 +- .../js/src/xpconnect/tests/idl/Makefile.in | 55 + .../js/src/xpconnect/tests/idl/makefile.win | 51 + .../src/xpconnect/{ => tests}/idl/xpctest.idl | 7 + .../xpconnect/{ => tests}/idl/xpctest2.idl | 0 .../{ => tests}/idl/xpctest_attributes.idl | 0 .../{ => tests}/idl/xpctest_calljs.idl | 0 .../{ => tests}/idl/xpctest_const.idl | 0 .../xpconnect/{ => tests}/idl/xpctest_in.idl | 0 .../{ => tests}/idl/xpctest_inout.idl | 0 .../{ => tests}/idl/xpctest_multiple.idl | 0 .../xpconnect/{ => tests}/idl/xpctest_out.idl | 0 mozilla/js/src/xpconnect/tests/js/checkid.js | 2 +- mozilla/js/src/xpconnect/tests/js/evaluate.js | 112 +- .../src/xpconnect/tests/js/notscriptable.js | 4 +- .../tests/{ => js/old}/simpletest.js | 13 +- .../js/src/xpconnect/tests/js/old/speed.js | 60 + .../xpconnect/tests/{ => js/old}/testxpc.js | 0 mozilla/js/src/xpconnect/tests/js/old/try.js | 27 + .../tests/{ => js/old}/xpctest_array.js | 0 .../tests/{ => js/old}/xpctest_callcontext.js | 0 .../tests/{ => js/old}/xpctest_echo.js | 17 +- .../{ => js/old}/xpctest_enum_and_sort.js | 0 .../{ => js/old}/xpctest_enum_constants.js | 0 .../tests/{ => js/old}/xpctest_enum_create.js | 0 .../tests/{ => js/old}/xpctest_exceptions.js | 0 .../tests/{ => js/old}/xpctest_ids.js | 0 .../tests/{ => js/old}/xpctest_overloaded.js | 0 .../tests/{ => js/old}/xpctest_primitives.js | 0 .../xpconnect/tests/js/readonlyattributes.js | 6 +- .../xpconnect/tests/js/readwriteattributes.js | 4 +- mozilla/js/src/xpconnect/tests/js/xpcfun.js | 251 +-- mozilla/js/src/xpconnect/tests/makefile.win | 12 +- mozilla/layout/base/nsLayoutUtils.cpp | 121 ++ mozilla/layout/base/nsLayoutUtils.h | 67 + mozilla/layout/base/public/MANIFEST | 1 + mozilla/layout/base/public/Makefile.in | 1 + mozilla/layout/base/public/makefile.win | 1 + mozilla/layout/base/public/nsLayoutUtils.h | 67 + mozilla/layout/base/src/Makefile.in | 1 + mozilla/layout/base/src/makefile.win | 2 + mozilla/layout/base/src/nsDocument.cpp | 58 +- mozilla/layout/base/src/nsDocument.h | 20 +- mozilla/layout/base/src/nsGenericElement.cpp | 54 +- mozilla/layout/base/src/nsGenericElement.h | 20 +- mozilla/layout/base/src/nsLayoutUtils.cpp | 121 ++ .../html/content/src/nsHTMLFormElement.cpp | 73 +- .../html/content/src/nsHTMLImageElement.cpp | 131 +- .../html/content/src/nsHTMLOptionElement.cpp | 4 +- .../html/content/src/nsHTMLSelectElement.cpp | 36 +- .../html/document/src/nsHTMLDocument.cpp | 69 +- .../layout/html/document/src/nsHTMLDocument.h | 2 +- mozilla/layout/xml/content/src/nsXMLElement.h | 32 +- .../content/src/nsJSXULCommandDispatcher.cpp | 261 +-- mozilla/rdf/content/src/nsJSXULDocument.cpp | 185 +- .../rdf/content/src/nsJSXULEditorElement.cpp | 39 +- mozilla/rdf/content/src/nsJSXULElement.cpp | 254 ++- .../rdf/content/src/nsJSXULTreeElement.cpp | 630 +++--- .../rdf/content/src/nsRDFGenericBuilder.cpp | 1 + mozilla/rdf/content/src/nsXULDocument.cpp | 18 +- mozilla/rdf/content/src/nsXULDocument.h | 20 +- mozilla/rdf/content/src/nsXULElement.cpp | 16 +- mozilla/rdf/content/src/nsXULElement.h | 20 +- .../rdf/content/src/nsXULTemplateBuilder.cpp | 1 + .../xpfe/AppCores/src/nsJSAppCoresManager.cpp | 226 +-- mozilla/xpfe/AppCores/src/nsJSBaseAppCore.cpp | 126 +- mozilla/xpfe/AppCores/src/nsJSToolkitCore.cpp | 262 +-- .../appshell/src/nsJSXPConnectFactory.cpp | 10 +- .../directory/nsDirectoryViewer.cpp | 3 +- .../sample/src/nsSampleAppShellComponent.cpp | 1 + mozilla/xpinstall/src/nsJSInstallVersion.cpp | 8 +- 256 files changed, 14454 insertions(+), 13936 deletions(-) create mode 100644 mozilla/js/src/xpconnect/idl/nsIXPConnect.idl delete mode 100644 mozilla/js/src/xpconnect/public/nsIXPConnect.h create mode 100644 mozilla/js/src/xpconnect/src/xpcjsruntime.cpp rename mozilla/js/src/xpconnect/{public => src}/xpclog.h (92%) create mode 100644 mozilla/js/src/xpconnect/src/xpcwrappednativescope.cpp create mode 100644 mozilla/js/src/xpconnect/tests/idl/Makefile.in create mode 100644 mozilla/js/src/xpconnect/tests/idl/makefile.win rename mozilla/js/src/xpconnect/{ => tests}/idl/xpctest.idl (98%) rename mozilla/js/src/xpconnect/{ => tests}/idl/xpctest2.idl (100%) rename mozilla/js/src/xpconnect/{ => tests}/idl/xpctest_attributes.idl (100%) rename mozilla/js/src/xpconnect/{ => tests}/idl/xpctest_calljs.idl (100%) rename mozilla/js/src/xpconnect/{ => tests}/idl/xpctest_const.idl (100%) rename mozilla/js/src/xpconnect/{ => tests}/idl/xpctest_in.idl (100%) rename mozilla/js/src/xpconnect/{ => tests}/idl/xpctest_inout.idl (100%) rename mozilla/js/src/xpconnect/{ => tests}/idl/xpctest_multiple.idl (100%) rename mozilla/js/src/xpconnect/{ => tests}/idl/xpctest_out.idl (100%) rename mozilla/js/src/xpconnect/tests/{ => js/old}/simpletest.js (77%) create mode 100644 mozilla/js/src/xpconnect/tests/js/old/speed.js rename mozilla/js/src/xpconnect/tests/{ => js/old}/testxpc.js (100%) create mode 100644 mozilla/js/src/xpconnect/tests/js/old/try.js rename mozilla/js/src/xpconnect/tests/{ => js/old}/xpctest_array.js (100%) rename mozilla/js/src/xpconnect/tests/{ => js/old}/xpctest_callcontext.js (100%) rename mozilla/js/src/xpconnect/tests/{ => js/old}/xpctest_echo.js (98%) rename mozilla/js/src/xpconnect/tests/{ => js/old}/xpctest_enum_and_sort.js (100%) rename mozilla/js/src/xpconnect/tests/{ => js/old}/xpctest_enum_constants.js (100%) rename mozilla/js/src/xpconnect/tests/{ => js/old}/xpctest_enum_create.js (100%) rename mozilla/js/src/xpconnect/tests/{ => js/old}/xpctest_exceptions.js (100%) rename mozilla/js/src/xpconnect/tests/{ => js/old}/xpctest_ids.js (100%) rename mozilla/js/src/xpconnect/tests/{ => js/old}/xpctest_overloaded.js (100%) rename mozilla/js/src/xpconnect/tests/{ => js/old}/xpctest_primitives.js (100%) create mode 100644 mozilla/layout/base/nsLayoutUtils.cpp create mode 100644 mozilla/layout/base/nsLayoutUtils.h create mode 100644 mozilla/layout/base/public/nsLayoutUtils.h create mode 100644 mozilla/layout/base/src/nsLayoutUtils.cpp 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;