return JS_FALSE;
return nsJSUtils::nsReportError(cx, NS_ERROR_DOM_SECURITY_ERR);
XULDocumentGetElementsByAttribute(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval){  nsIDOMXULDocument *nativeThis = (nsIDOMXULDocument*)nsJSUtils::nsGetNativeThis(cx, obj);  nsIDOMNodeList* nativeRet;  nsAutoString b0;  nsAutoString b1;  *rval = JSVAL_NULL;  nsIScriptContext *scriptCX = (nsIScriptContext *)JS_GetContextPrivate(cx);  nsCOMPtr<nsIScriptSecurityManager> secMan;  if (NS_OK != scriptCX->GetSecurityManager(getter_AddRefs(secMan))) {    return JS_FALSE;  }  {    PRBool ok;    secMan->CheckScriptAccess(scriptCX, obj, "xuldocument.getelementsbyattribute",PR_FALSE , &ok);    if (!ok) {      //Need to throw error here      return JS_FALSE;    }  }  // If there's no private data, this must be the prototype, so ignore  if (nsnull == nativeThis) {    return JS_TRUE;  }  {    if (argc < 2) {      JS_ReportError(cx, "Function getElementsByAttribute requires 2 parameters");      return JS_FALSE;    }    nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]);    nsJSUtils::nsConvertJSValToString(b1, cx, argv[1]);    if (NS_OK != nativeThis->GetElementsByAttribute(b0, b1, &nativeRet)) {      return JS_FALSE;    }    nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, rval);  }  return JS_TRUE;}