diff --git a/mozilla/dom/public/nsDOMPropEnums.h b/mozilla/dom/public/nsDOMPropEnums.h index 9096c75e770..e85d2508c95 100644 --- a/mozilla/dom/public/nsDOMPropEnums.h +++ b/mozilla/dom/public/nsDOMPropEnums.h @@ -945,6 +945,7 @@ enum nsDOMProp { NS_DOM_PROP_XULMENULISTELEMENT_CROP, NS_DOM_PROP_XULMENULISTELEMENT_DATA, NS_DOM_PROP_XULMENULISTELEMENT_DISABLED, + NS_DOM_PROP_XULMENULISTELEMENT_SELECTEDINDEX, NS_DOM_PROP_XULMENULISTELEMENT_SELECTEDITEM, NS_DOM_PROP_XULMENULISTELEMENT_SRC, NS_DOM_PROP_XULMENULISTELEMENT_VALUE, diff --git a/mozilla/dom/public/nsDOMPropNames.h b/mozilla/dom/public/nsDOMPropNames.h index 8661885e499..e712e9c11eb 100644 --- a/mozilla/dom/public/nsDOMPropNames.h +++ b/mozilla/dom/public/nsDOMPropNames.h @@ -944,6 +944,7 @@ "xulmenulistelement.crop", \ "xulmenulistelement.data", \ "xulmenulistelement.disabled", \ + "xulmenulistelement.selectedindex", \ "xulmenulistelement.selecteditem", \ "xulmenulistelement.src", \ "xulmenulistelement.value", \ diff --git a/mozilla/dom/src/xul/nsJSXULCommandDispatcher.cpp b/mozilla/dom/src/xul/nsJSXULCommandDispatcher.cpp index 9df72d14830..b641ebc4169 100644 --- a/mozilla/dom/src/xul/nsJSXULCommandDispatcher.cpp +++ b/mozilla/dom/src/xul/nsJSXULCommandDispatcher.cpp @@ -74,7 +74,7 @@ GetXULCommandDispatcherProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) @@ -157,7 +157,7 @@ SetXULCommandDispatcherProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) diff --git a/mozilla/dom/src/xul/nsJSXULDocument.cpp b/mozilla/dom/src/xul/nsJSXULDocument.cpp index 3a1ba734008..60077e61389 100644 --- a/mozilla/dom/src/xul/nsJSXULDocument.cpp +++ b/mozilla/dom/src/xul/nsJSXULDocument.cpp @@ -76,7 +76,7 @@ GetXULDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) @@ -161,7 +161,7 @@ SetXULDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) diff --git a/mozilla/dom/src/xul/nsJSXULElement.cpp b/mozilla/dom/src/xul/nsJSXULElement.cpp index f1f51711e4a..c6839e01a89 100644 --- a/mozilla/dom/src/xul/nsJSXULElement.cpp +++ b/mozilla/dom/src/xul/nsJSXULElement.cpp @@ -80,7 +80,7 @@ GetXULElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) @@ -189,7 +189,7 @@ SetXULElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) diff --git a/mozilla/dom/src/xul/nsJSXULTreeElement.cpp b/mozilla/dom/src/xul/nsJSXULTreeElement.cpp index 73bcc86024e..215c8371028 100644 --- a/mozilla/dom/src/xul/nsJSXULTreeElement.cpp +++ b/mozilla/dom/src/xul/nsJSXULTreeElement.cpp @@ -70,7 +70,7 @@ GetXULTreeElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) @@ -155,7 +155,7 @@ SetXULTreeElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) diff --git a/mozilla/rdf/content/public/idl/XULMenuListElement.idl b/mozilla/rdf/content/public/idl/XULMenuListElement.idl index d667a043245..d7f53b8e3f4 100644 --- a/mozilla/rdf/content/public/idl/XULMenuListElement.idl +++ b/mozilla/rdf/content/public/idl/XULMenuListElement.idl @@ -4,6 +4,7 @@ interface XULMenuListElement : XULElement { attribute DOMString value; attribute DOMString data; attribute Element selectedItem; + attribute int selectedIndex; attribute DOMString crop; attribute boolean disabled; attribute DOMString src; diff --git a/mozilla/rdf/content/public/nsIDOMXULMenuListElement.h b/mozilla/rdf/content/public/nsIDOMXULMenuListElement.h index fd64ba69a13..2e314c7edf3 100644 --- a/mozilla/rdf/content/public/nsIDOMXULMenuListElement.h +++ b/mozilla/rdf/content/public/nsIDOMXULMenuListElement.h @@ -48,6 +48,9 @@ public: NS_IMETHOD GetSelectedItem(nsIDOMElement** aSelectedItem)=0; NS_IMETHOD SetSelectedItem(nsIDOMElement* aSelectedItem)=0; + NS_IMETHOD GetSelectedIndex(PRInt32* aSelectedIndex)=0; + NS_IMETHOD SetSelectedIndex(PRInt32 aSelectedIndex)=0; + NS_IMETHOD GetCrop(nsString& aCrop)=0; NS_IMETHOD SetCrop(const nsString& aCrop)=0; @@ -66,6 +69,8 @@ public: NS_IMETHOD SetData(const nsString& aData); \ NS_IMETHOD GetSelectedItem(nsIDOMElement** aSelectedItem); \ NS_IMETHOD SetSelectedItem(nsIDOMElement* aSelectedItem); \ + NS_IMETHOD GetSelectedIndex(PRInt32* aSelectedIndex); \ + NS_IMETHOD SetSelectedIndex(PRInt32 aSelectedIndex); \ NS_IMETHOD GetCrop(nsString& aCrop); \ NS_IMETHOD SetCrop(const nsString& aCrop); \ NS_IMETHOD GetDisabled(PRBool* aDisabled); \ @@ -82,6 +87,8 @@ public: NS_IMETHOD SetData(const nsString& aData) { return _to SetData(aData); } \ NS_IMETHOD GetSelectedItem(nsIDOMElement** aSelectedItem) { return _to GetSelectedItem(aSelectedItem); } \ NS_IMETHOD SetSelectedItem(nsIDOMElement* aSelectedItem) { return _to SetSelectedItem(aSelectedItem); } \ + NS_IMETHOD GetSelectedIndex(PRInt32* aSelectedIndex) { return _to GetSelectedIndex(aSelectedIndex); } \ + NS_IMETHOD SetSelectedIndex(PRInt32 aSelectedIndex) { return _to SetSelectedIndex(aSelectedIndex); } \ NS_IMETHOD GetCrop(nsString& aCrop) { return _to GetCrop(aCrop); } \ NS_IMETHOD SetCrop(const nsString& aCrop) { return _to SetCrop(aCrop); } \ NS_IMETHOD GetDisabled(PRBool* aDisabled) { return _to GetDisabled(aDisabled); } \ diff --git a/mozilla/rdf/content/src/nsJSXULBrowserElement.cpp b/mozilla/rdf/content/src/nsJSXULBrowserElement.cpp index efad348b54c..10f9617a1dc 100644 --- a/mozilla/rdf/content/src/nsJSXULBrowserElement.cpp +++ b/mozilla/rdf/content/src/nsJSXULBrowserElement.cpp @@ -65,7 +65,7 @@ GetXULBrowserElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) @@ -111,7 +111,7 @@ SetXULBrowserElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) diff --git a/mozilla/rdf/content/src/nsJSXULCheckboxElement.cpp b/mozilla/rdf/content/src/nsJSXULCheckboxElement.cpp index bb00912bd0d..5356af9a151 100644 --- a/mozilla/rdf/content/src/nsJSXULCheckboxElement.cpp +++ b/mozilla/rdf/content/src/nsJSXULCheckboxElement.cpp @@ -69,7 +69,7 @@ GetXULCheckboxElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) @@ -186,7 +186,7 @@ SetXULCheckboxElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) diff --git a/mozilla/rdf/content/src/nsJSXULCommandDispatcher.cpp b/mozilla/rdf/content/src/nsJSXULCommandDispatcher.cpp index 9df72d14830..b641ebc4169 100644 --- a/mozilla/rdf/content/src/nsJSXULCommandDispatcher.cpp +++ b/mozilla/rdf/content/src/nsJSXULCommandDispatcher.cpp @@ -74,7 +74,7 @@ GetXULCommandDispatcherProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) @@ -157,7 +157,7 @@ SetXULCommandDispatcherProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) diff --git a/mozilla/rdf/content/src/nsJSXULDocument.cpp b/mozilla/rdf/content/src/nsJSXULDocument.cpp index 3a1ba734008..60077e61389 100644 --- a/mozilla/rdf/content/src/nsJSXULDocument.cpp +++ b/mozilla/rdf/content/src/nsJSXULDocument.cpp @@ -76,7 +76,7 @@ GetXULDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) @@ -161,7 +161,7 @@ SetXULDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) diff --git a/mozilla/rdf/content/src/nsJSXULEditorElement.cpp b/mozilla/rdf/content/src/nsJSXULEditorElement.cpp index 1c32018e8cb..35d3862a213 100644 --- a/mozilla/rdf/content/src/nsJSXULEditorElement.cpp +++ b/mozilla/rdf/content/src/nsJSXULEditorElement.cpp @@ -65,7 +65,7 @@ GetXULEditorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) @@ -111,7 +111,7 @@ SetXULEditorElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) diff --git a/mozilla/rdf/content/src/nsJSXULElement.cpp b/mozilla/rdf/content/src/nsJSXULElement.cpp index f1f51711e4a..c6839e01a89 100644 --- a/mozilla/rdf/content/src/nsJSXULElement.cpp +++ b/mozilla/rdf/content/src/nsJSXULElement.cpp @@ -80,7 +80,7 @@ GetXULElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) @@ -189,7 +189,7 @@ SetXULElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) diff --git a/mozilla/rdf/content/src/nsJSXULIFrameElement.cpp b/mozilla/rdf/content/src/nsJSXULIFrameElement.cpp index d0d8dcfbb49..72fe64f5e2d 100644 --- a/mozilla/rdf/content/src/nsJSXULIFrameElement.cpp +++ b/mozilla/rdf/content/src/nsJSXULIFrameElement.cpp @@ -65,7 +65,7 @@ GetXULIFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) @@ -111,7 +111,7 @@ SetXULIFrameElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) diff --git a/mozilla/rdf/content/src/nsJSXULMenuListElement.cpp b/mozilla/rdf/content/src/nsJSXULMenuListElement.cpp index 8aeea2b8ede..d6b8558aeaf 100644 --- a/mozilla/rdf/content/src/nsJSXULMenuListElement.cpp +++ b/mozilla/rdf/content/src/nsJSXULMenuListElement.cpp @@ -51,9 +51,10 @@ enum XULMenuListElement_slots { XULMENULISTELEMENT_VALUE = -1, XULMENULISTELEMENT_DATA = -2, XULMENULISTELEMENT_SELECTEDITEM = -3, - XULMENULISTELEMENT_CROP = -4, - XULMENULISTELEMENT_DISABLED = -5, - XULMENULISTELEMENT_SRC = -6 + XULMENULISTELEMENT_SELECTEDINDEX = -4, + XULMENULISTELEMENT_CROP = -5, + XULMENULISTELEMENT_DISABLED = -6, + XULMENULISTELEMENT_SRC = -7 }; /***********************************************************************/ @@ -70,7 +71,7 @@ GetXULMenuListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) @@ -113,6 +114,18 @@ GetXULMenuListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } break; } + case XULMENULISTELEMENT_SELECTEDINDEX: + { + rv = secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULMENULISTELEMENT_SELECTEDINDEX, PR_FALSE); + if (NS_SUCCEEDED(rv)) { + PRInt32 prop; + rv = a->GetSelectedIndex(&prop); + if (NS_SUCCEEDED(rv)) { + *vp = INT_TO_JSVAL(prop); + } + } + break; + } case XULMENULISTELEMENT_CROP: { rv = secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULMENULISTELEMENT_CROP, PR_FALSE); @@ -176,7 +189,7 @@ SetXULMenuListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) @@ -222,6 +235,24 @@ SetXULMenuListElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } break; } + case XULMENULISTELEMENT_SELECTEDINDEX: + { + rv = secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULMENULISTELEMENT_SELECTEDINDEX, PR_TRUE); + if (NS_SUCCEEDED(rv)) { + PRInt32 prop; + int32 temp; + if (JSVAL_IS_NUMBER(*vp) && JS_ValueToInt32(cx, *vp, &temp)) { + prop = (PRInt32)temp; + } + else { + rv = NS_ERROR_DOM_NOT_NUMBER_ERR; + } + + rv = a->SetSelectedIndex(prop); + + } + break; + } case XULMENULISTELEMENT_CROP: { rv = secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULMENULISTELEMENT_CROP, PR_TRUE); @@ -332,6 +363,7 @@ static JSPropertySpec XULMenuListElementProperties[] = {"value", XULMENULISTELEMENT_VALUE, JSPROP_ENUMERATE}, {"data", XULMENULISTELEMENT_DATA, JSPROP_ENUMERATE}, {"selectedItem", XULMENULISTELEMENT_SELECTEDITEM, JSPROP_ENUMERATE}, + {"selectedIndex", XULMENULISTELEMENT_SELECTEDINDEX, JSPROP_ENUMERATE}, {"crop", XULMENULISTELEMENT_CROP, JSPROP_ENUMERATE}, {"disabled", XULMENULISTELEMENT_DISABLED, JSPROP_ENUMERATE}, {"src", XULMENULISTELEMENT_SRC, JSPROP_ENUMERATE}, diff --git a/mozilla/rdf/content/src/nsJSXULPopupElement.cpp b/mozilla/rdf/content/src/nsJSXULPopupElement.cpp index 133cd254fe6..03736b41ced 100644 --- a/mozilla/rdf/content/src/nsJSXULPopupElement.cpp +++ b/mozilla/rdf/content/src/nsJSXULPopupElement.cpp @@ -59,7 +59,7 @@ GetXULPopupElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) @@ -93,7 +93,7 @@ SetXULPopupElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) diff --git a/mozilla/rdf/content/src/nsJSXULRadioElement.cpp b/mozilla/rdf/content/src/nsJSXULRadioElement.cpp index 5a24b947d69..a7a0b808a81 100644 --- a/mozilla/rdf/content/src/nsJSXULRadioElement.cpp +++ b/mozilla/rdf/content/src/nsJSXULRadioElement.cpp @@ -69,7 +69,7 @@ GetXULRadioElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) @@ -186,7 +186,7 @@ SetXULRadioElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) diff --git a/mozilla/rdf/content/src/nsJSXULRadioGroupElement.cpp b/mozilla/rdf/content/src/nsJSXULRadioGroupElement.cpp index 3b5dda72ee0..ff8fe834726 100644 --- a/mozilla/rdf/content/src/nsJSXULRadioGroupElement.cpp +++ b/mozilla/rdf/content/src/nsJSXULRadioGroupElement.cpp @@ -65,29 +65,22 @@ GetXULRadioGroupElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v return JS_TRUE; } + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { - nsresult rv; - NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, - NS_SCRIPTSECURITYMANAGER_PROGID, &rv); - if (NS_FAILED(rv)) { - return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); - } + nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); + if (!secMan) + return PR_FALSE; switch(JSVAL_TO_INT(id)) { case XULRADIOGROUPELEMENT_SELECTEDITEM: { rv = secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULRADIOGROUPELEMENT_SELECTEDITEM, PR_FALSE); - if (NS_FAILED(rv)) { - return nsJSUtils::nsReportError(cx, obj, rv); - } - nsIDOMXULRadioElement* prop; - nsresult result = NS_OK; - result = a->GetSelectedItem(&prop); - if (NS_SUCCEEDED(result)) { - // get the js object - nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); - } - else { - return nsJSUtils::nsReportError(cx, obj, result); + if (NS_SUCCEEDED(rv)) { + nsIDOMXULRadioElement* prop; + rv = a->GetSelectedItem(&prop); + if (NS_SUCCEEDED(rv)) { + // get the js object + nsJSUtils::nsConvertObjectToJSVal((nsISupports *)prop, cx, obj, vp); + } } break; } @@ -99,6 +92,8 @@ GetXULRadioGroupElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, obj, id, vp); } + if (NS_FAILED(rv)) + return nsJSUtils::nsReportError(cx, obj, rv); return PR_TRUE; } @@ -116,29 +111,26 @@ SetXULRadioGroupElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v return JS_TRUE; } + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { - nsresult rv; - NS_WITH_SERVICE(nsIScriptSecurityManager, secMan, - NS_SCRIPTSECURITYMANAGER_PROGID, &rv); - if (NS_FAILED(rv)) { - return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECMAN_ERR); - } + nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); + if (!secMan) + return PR_FALSE; switch(JSVAL_TO_INT(id)) { case XULRADIOGROUPELEMENT_SELECTEDITEM: { rv = secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_XULRADIOGROUPELEMENT_SELECTEDITEM, PR_TRUE); - if (NS_FAILED(rv)) { - return nsJSUtils::nsReportError(cx, obj, rv); - } - nsIDOMXULRadioElement* prop; - if (PR_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&prop, - kIXULRadioElementIID, "XULRadioElement", - cx, *vp)) { - return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR); - } + if (NS_SUCCEEDED(rv)) { + nsIDOMXULRadioElement* prop; + if (PR_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&prop, + kIXULRadioElementIID, "XULRadioElement", + cx, *vp)) { + rv = NS_ERROR_DOM_NOT_OBJECT_ERR; + } - a->SetSelectedItem(prop); - NS_IF_RELEASE(prop); + rv = a->SetSelectedItem(prop); + NS_IF_RELEASE(prop); + } break; } default: @@ -149,6 +141,8 @@ SetXULRadioGroupElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *v return nsJSUtils::nsCallJSScriptObjectSetProperty(a, cx, obj, id, vp); } + if (NS_FAILED(rv)) + return nsJSUtils::nsReportError(cx, obj, rv); return PR_TRUE; } diff --git a/mozilla/rdf/content/src/nsJSXULTitledButtonElement.cpp b/mozilla/rdf/content/src/nsJSXULTitledButtonElement.cpp index dfb7c040194..da662a7e47c 100644 --- a/mozilla/rdf/content/src/nsJSXULTitledButtonElement.cpp +++ b/mozilla/rdf/content/src/nsJSXULTitledButtonElement.cpp @@ -68,7 +68,7 @@ GetXULTitledButtonElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) @@ -173,7 +173,7 @@ SetXULTitledButtonElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) diff --git a/mozilla/rdf/content/src/nsJSXULTreeElement.cpp b/mozilla/rdf/content/src/nsJSXULTreeElement.cpp index 73bcc86024e..215c8371028 100644 --- a/mozilla/rdf/content/src/nsJSXULTreeElement.cpp +++ b/mozilla/rdf/content/src/nsJSXULTreeElement.cpp @@ -70,7 +70,7 @@ GetXULTreeElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) @@ -155,7 +155,7 @@ SetXULTreeElementProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return JS_TRUE; } - nsresult rv; + nsresult rv = NS_OK; if (JSVAL_IS_INT(id)) { nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj); if (!secMan) diff --git a/mozilla/rdf/content/src/nsXULMenuListElement.cpp b/mozilla/rdf/content/src/nsXULMenuListElement.cpp index 76b1eab8b25..e519ac7ca1c 100644 --- a/mozilla/rdf/content/src/nsXULMenuListElement.cpp +++ b/mozilla/rdf/content/src/nsXULMenuListElement.cpp @@ -163,6 +163,48 @@ GetMenuChildrenElement(nsIContent* aParent, nsIContent** aResult) } } +NS_IMETHODIMP +nsXULMenuListElement::GetSelectedIndex(PRInt32* aResult) +{ + // XXX Quick and dirty. Doesn't work with hierarchies, or + // when other things are put in the . + *aResult = -1; + if (mSelectedItem) { + nsCOMPtr parent; + nsCOMPtr child(do_QueryInterface(mSelectedItem)); + child->GetParent(*getter_AddRefs(parent)); + parent->IndexOf(child, *aResult); + } + return NS_OK; +} + +NS_IMETHODIMP +nsXULMenuListElement::SetSelectedIndex(PRInt32 anIndex) +{ + // XXX Quick and dirty. Doesn't work with hierarchies, or + // when other things are put in the . + if (anIndex == -1) + SetSelectedItem(nsnull); + + if (anIndex < 0) + return NS_OK; + + nsCOMPtr child; + nsCOMPtr parent(do_QueryInterface(mOuter)); + GetMenuChildrenElement(parent, getter_AddRefs(child)); + if (child) { + PRInt32 count; + child->ChildCount(count); + if (anIndex >= count) + return NS_OK; + + nsCOMPtr item; + child->ChildAt(anIndex, *getter_AddRefs(item)); + nsCOMPtr element(do_QueryInterface(item)); + SetSelectedItem(element); + } + return NS_OK; +} NS_IMETHODIMP nsXULMenuListElement::GetSelectedItem(nsIDOMElement** aResult)