зеркало из https://github.com/mozilla/pjs.git
Checking in DOM Level 2 version of the DOM interface Element.
This commit is contained in:
Родитель
4a7bde5aac
Коммит
a29b0b6f25
|
@ -843,6 +843,209 @@ nsGenericElement::GetElementsByTagName(const nsString& aTagname,
|
||||||
return list->QueryInterface(kIDOMNodeListIID, (void **)aReturn);
|
return list->QueryInterface(kIDOMNodeListIID, (void **)aReturn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
nsGenericElement::GetAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName, nsString& aReturn)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIAtom> name(dont_AddRef(NS_NewAtom(aLocalName)));
|
||||||
|
PRInt32 nsid;
|
||||||
|
|
||||||
|
nsCOMPtr<nsINodeInfoManager> nimgr;
|
||||||
|
mNodeInfo->GetNodeInfoManager(*getter_AddRefs(nimgr));
|
||||||
|
NS_ENSURE_TRUE(nimgr, NS_ERROR_FAILURE);
|
||||||
|
|
||||||
|
nsCOMPtr<nsINameSpaceManager> nsmgr;
|
||||||
|
nimgr->GetNamespaceManager(*getter_AddRefs(nsmgr));
|
||||||
|
NS_ENSURE_TRUE(nsmgr, NS_ERROR_FAILURE);
|
||||||
|
|
||||||
|
nsmgr->GetNameSpaceID(aNamespaceURI, nsid);
|
||||||
|
|
||||||
|
if (nsid == kNameSpaceID_Unknown) {
|
||||||
|
// Unkonwn namespace means no attr...
|
||||||
|
|
||||||
|
aReturn.Truncate();
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
mContent->GetAttribute(nsid, name, aReturn);
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
nsGenericElement::SetAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aQualifiedName,
|
||||||
|
const nsString& aValue)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsINodeInfoManager> nimgr;
|
||||||
|
mNodeInfo->GetNodeInfoManager(*getter_AddRefs(nimgr));
|
||||||
|
NS_ENSURE_TRUE(nimgr, NS_ERROR_FAILURE);
|
||||||
|
|
||||||
|
nsCOMPtr<nsINodeInfo> ni;
|
||||||
|
nsresult rv = nimgr->GetNodeInfo(aQualifiedName, aNamespaceURI,
|
||||||
|
*getter_AddRefs(ni));
|
||||||
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIAtom> name;
|
||||||
|
PRInt32 nsid;
|
||||||
|
|
||||||
|
ni->GetNameAtom(*getter_AddRefs(name));
|
||||||
|
ni->GetNamespaceID(nsid);
|
||||||
|
|
||||||
|
return mContent->SetAttribute(nsid, name, aValue, PR_TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
|
||||||
|
nsGenericElement::RemoveAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIAtom> name(dont_AddRef(NS_NewAtom(aLocalName)));
|
||||||
|
PRInt32 nsid;
|
||||||
|
|
||||||
|
nsCOMPtr<nsINodeInfoManager> nimgr;
|
||||||
|
mNodeInfo->GetNodeInfoManager(*getter_AddRefs(nimgr));
|
||||||
|
NS_ENSURE_TRUE(nimgr, NS_ERROR_FAILURE);
|
||||||
|
|
||||||
|
nsCOMPtr<nsINameSpaceManager> nsmgr;
|
||||||
|
nimgr->GetNamespaceManager(*getter_AddRefs(nsmgr));
|
||||||
|
NS_ENSURE_TRUE(nsmgr, NS_ERROR_FAILURE);
|
||||||
|
|
||||||
|
nsmgr->GetNameSpaceID(aNamespaceURI, nsid);
|
||||||
|
|
||||||
|
if (nsid == kNameSpaceID_Unknown) {
|
||||||
|
// Unkonwn namespace means no attr...
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsAutoString tmp;
|
||||||
|
mContent->UnsetAttribute(nsid, name, PR_TRUE);
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
nsGenericElement::GetAttributeNodeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName,
|
||||||
|
nsIDOMAttr** aReturn)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aReturn);
|
||||||
|
|
||||||
|
nsIDOMNamedNodeMap* map;
|
||||||
|
nsresult result = GetAttributes(&map);
|
||||||
|
|
||||||
|
*aReturn = nsnull;
|
||||||
|
if (NS_OK == result) {
|
||||||
|
nsIDOMNode* node;
|
||||||
|
result = map->GetNamedItemNS(aNamespaceURI, aLocalName, &node);
|
||||||
|
if ((NS_OK == result) && (nsnull != node)) {
|
||||||
|
result = node->QueryInterface(kIDOMAttrIID, (void **)aReturn);
|
||||||
|
NS_IF_RELEASE(node);
|
||||||
|
}
|
||||||
|
NS_RELEASE(map);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
nsGenericElement::SetAttributeNodeNS(nsIDOMAttr* aNewAttr,
|
||||||
|
nsIDOMAttr** aReturn)
|
||||||
|
{
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
nsGenericElement::GetElementsByTagNameNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName,
|
||||||
|
nsIDOMNodeList** aReturn)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIAtom> nameAtom(dont_AddRef(NS_NewAtom(aLocalName)));
|
||||||
|
PRInt32 nameSpaceId = kNameSpaceID_Unknown;
|
||||||
|
|
||||||
|
nsContentList* list = nsnull;
|
||||||
|
|
||||||
|
if (!aNamespaceURI.EqualsWithConversion("*")) {
|
||||||
|
nsCOMPtr<nsINodeInfoManager> nimgr;
|
||||||
|
mNodeInfo->GetNodeInfoManager(*getter_AddRefs(nimgr));
|
||||||
|
NS_ENSURE_TRUE(nimgr, NS_ERROR_FAILURE);
|
||||||
|
|
||||||
|
nsCOMPtr<nsINameSpaceManager> nsmgr;
|
||||||
|
nimgr->GetNamespaceManager(*getter_AddRefs(nsmgr));
|
||||||
|
NS_ENSURE_TRUE(nsmgr, NS_ERROR_FAILURE);
|
||||||
|
|
||||||
|
nsmgr->GetNameSpaceID(aNamespaceURI, nameSpaceId);
|
||||||
|
|
||||||
|
if (nameSpaceId == kNameSpaceID_Unknown) {
|
||||||
|
// Unkonwn namespace means no matches, we create an empty list...
|
||||||
|
list = new nsContentList(mDocument, nsnull, kNameSpaceID_None);
|
||||||
|
NS_ENSURE_TRUE(list, NS_ERROR_OUT_OF_MEMORY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!list) {
|
||||||
|
list = new nsContentList(mDocument, nameAtom, nameSpaceId, mContent);
|
||||||
|
NS_ENSURE_TRUE(list, NS_ERROR_OUT_OF_MEMORY);
|
||||||
|
}
|
||||||
|
|
||||||
|
return list->QueryInterface(kIDOMNodeListIID, (void **)aReturn);
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
nsGenericElement::HasAttribute(const nsString& aName, PRBool* aReturn)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aReturn);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIAtom> name;
|
||||||
|
PRInt32 nsid;
|
||||||
|
|
||||||
|
nsresult rv = mContent->ParseAttributeString(aName, *getter_AddRefs(name),
|
||||||
|
nsid);
|
||||||
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
|
nsAutoString tmp;
|
||||||
|
rv = mContent->GetAttribute(nsid, name, tmp);
|
||||||
|
|
||||||
|
*aReturn = rv == NS_CONTENT_ATTR_NOT_THERE ? PR_FALSE : PR_TRUE;
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
nsGenericElement::HasAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName, PRBool* aReturn)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aReturn);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIAtom> name(dont_AddRef(NS_NewAtom(aLocalName)));
|
||||||
|
PRInt32 nsid;
|
||||||
|
|
||||||
|
nsCOMPtr<nsINodeInfoManager> nimgr;
|
||||||
|
mNodeInfo->GetNodeInfoManager(*getter_AddRefs(nimgr));
|
||||||
|
NS_ENSURE_TRUE(nimgr, NS_ERROR_FAILURE);
|
||||||
|
|
||||||
|
nsCOMPtr<nsINameSpaceManager> nsmgr;
|
||||||
|
nimgr->GetNamespaceManager(*getter_AddRefs(nsmgr));
|
||||||
|
NS_ENSURE_TRUE(nsmgr, NS_ERROR_FAILURE);
|
||||||
|
|
||||||
|
nsmgr->GetNameSpaceID(aNamespaceURI, nsid);
|
||||||
|
|
||||||
|
if (nsid == kNameSpaceID_Unknown) {
|
||||||
|
// Unkonwn namespace means no attr...
|
||||||
|
|
||||||
|
*aReturn = PR_FALSE;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsAutoString tmp;
|
||||||
|
nsresult rv = mContent->GetAttribute(nsid, name, tmp);
|
||||||
|
|
||||||
|
*aReturn = rv == NS_CONTENT_ATTR_NOT_THERE ? PR_FALSE : PR_TRUE;
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
nsGenericElement::JoinTextNodes(nsIContent* aFirst,
|
nsGenericElement::JoinTextNodes(nsIContent* aFirst,
|
||||||
nsIContent* aSecond)
|
nsIContent* aSecond)
|
||||||
|
|
|
@ -155,6 +155,23 @@ public:
|
||||||
nsresult RemoveAttributeNode(nsIDOMAttr* aOldAttr, nsIDOMAttr** aReturn);
|
nsresult RemoveAttributeNode(nsIDOMAttr* aOldAttr, nsIDOMAttr** aReturn);
|
||||||
nsresult GetElementsByTagName(const nsString& aTagname,
|
nsresult GetElementsByTagName(const nsString& aTagname,
|
||||||
nsIDOMNodeList** aReturn);
|
nsIDOMNodeList** aReturn);
|
||||||
|
nsresult GetAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName, nsString& aReturn);
|
||||||
|
nsresult SetAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aQualifiedName,
|
||||||
|
const nsString& aValue);
|
||||||
|
nsresult RemoveAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName);
|
||||||
|
nsresult GetAttributeNodeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName,
|
||||||
|
nsIDOMAttr** aReturn);
|
||||||
|
nsresult SetAttributeNodeNS(nsIDOMAttr* aNewAttr, nsIDOMAttr** aReturn);
|
||||||
|
nsresult GetElementsByTagNameNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName,
|
||||||
|
nsIDOMNodeList** aReturn);
|
||||||
|
nsresult HasAttribute(const nsString& aName, PRBool* aReturn);
|
||||||
|
nsresult HasAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName, PRBool* aReturn);
|
||||||
|
|
||||||
// nsIScriptObjectOwner interface
|
// nsIScriptObjectOwner interface
|
||||||
nsresult GetScriptObject(nsIScriptContext* aContext, void** aScriptObject);
|
nsresult GetScriptObject(nsIScriptContext* aContext, void** aScriptObject);
|
||||||
|
@ -464,6 +481,39 @@ public:
|
||||||
NS_IMETHOD GetElementsByTagName(const nsString& aTagname, \
|
NS_IMETHOD GetElementsByTagName(const nsString& aTagname, \
|
||||||
nsIDOMNodeList** aReturn) { \
|
nsIDOMNodeList** aReturn) { \
|
||||||
return _g.GetElementsByTagName(aTagname, aReturn); \
|
return _g.GetElementsByTagName(aTagname, aReturn); \
|
||||||
|
} \
|
||||||
|
NS_IMETHOD GetAttributeNS(const nsString& aNamespaceURI, \
|
||||||
|
const nsString& aLocalName, nsString& aReturn) { \
|
||||||
|
return _g.GetAttributeNS(aNamespaceURI, aLocalName, aReturn); \
|
||||||
|
} \
|
||||||
|
NS_IMETHOD SetAttributeNS(const nsString& aNamespaceURI, \
|
||||||
|
const nsString& aQualifiedName, \
|
||||||
|
const nsString& aValue) { \
|
||||||
|
return _g.SetAttributeNS(aNamespaceURI, aQualifiedName, aValue); \
|
||||||
|
} \
|
||||||
|
NS_IMETHOD RemoveAttributeNS(const nsString& aNamespaceURI, \
|
||||||
|
const nsString& aLocalName) { \
|
||||||
|
return _g.RemoveAttributeNS(aNamespaceURI, aLocalName); \
|
||||||
|
} \
|
||||||
|
NS_IMETHOD GetAttributeNodeNS(const nsString& aNamespaceURI, \
|
||||||
|
const nsString& aLocalName, \
|
||||||
|
nsIDOMAttr** aReturn) { \
|
||||||
|
return _g.GetAttributeNodeNS(aNamespaceURI, aLocalName, aReturn); \
|
||||||
|
} \
|
||||||
|
NS_IMETHOD SetAttributeNodeNS(nsIDOMAttr* aNewAttr, nsIDOMAttr** aReturn) { \
|
||||||
|
return _g.SetAttributeNodeNS(aNewAttr, aReturn); \
|
||||||
|
} \
|
||||||
|
NS_IMETHOD GetElementsByTagNameNS(const nsString& aNamespaceURI, \
|
||||||
|
const nsString& aLocalName, \
|
||||||
|
nsIDOMNodeList** aReturn) { \
|
||||||
|
return _g.GetElementsByTagNameNS(aNamespaceURI, aLocalName, aReturn); \
|
||||||
|
} \
|
||||||
|
NS_IMETHOD HasAttribute(const nsString& aName, PRBool* aReturn) { \
|
||||||
|
return _g.HasAttribute(aName, aReturn); \
|
||||||
|
} \
|
||||||
|
NS_IMETHOD HasAttributeNS(const nsString& aNamespaceURI, \
|
||||||
|
const nsString& aLocalName, PRBool* aReturn) { \
|
||||||
|
return _g.HasAttributeNS(aNamespaceURI, aLocalName, aReturn); \
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -124,6 +124,39 @@ public:
|
||||||
nsIDOMNodeList** aReturn) {
|
nsIDOMNodeList** aReturn) {
|
||||||
return mInner.GetElementsByTagName(aTagname, aReturn);
|
return mInner.GetElementsByTagName(aTagname, aReturn);
|
||||||
}
|
}
|
||||||
|
NS_IMETHOD GetAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName, nsString& aReturn) {
|
||||||
|
return mInner.GetAttributeNS(aNamespaceURI, aLocalName, aReturn);
|
||||||
|
}
|
||||||
|
NS_IMETHOD SetAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aQualifiedName,
|
||||||
|
const nsString& aValue) {
|
||||||
|
return mInner.SetAttributeNS(aNamespaceURI, aQualifiedName, aValue);
|
||||||
|
}
|
||||||
|
NS_IMETHOD RemoveAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName) {
|
||||||
|
return mInner.RemoveAttributeNS(aNamespaceURI, aLocalName);
|
||||||
|
}
|
||||||
|
NS_IMETHOD GetAttributeNodeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName,
|
||||||
|
nsIDOMAttr** aReturn) {
|
||||||
|
return mInner.GetAttributeNodeNS(aNamespaceURI, aLocalName, aReturn);
|
||||||
|
}
|
||||||
|
NS_IMETHOD SetAttributeNodeNS(nsIDOMAttr* aNewAttr, nsIDOMAttr** aReturn) {
|
||||||
|
return mInner.SetAttributeNodeNS(aNewAttr, aReturn);
|
||||||
|
}
|
||||||
|
NS_IMETHOD GetElementsByTagNameNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName,
|
||||||
|
nsIDOMNodeList** aReturn) {
|
||||||
|
return mInner.GetElementsByTagNameNS(aNamespaceURI, aLocalName, aReturn);
|
||||||
|
}
|
||||||
|
NS_IMETHOD HasAttribute(const nsString& aName, PRBool* aReturn) {
|
||||||
|
return mInner.HasAttribute(aName, aReturn);
|
||||||
|
}
|
||||||
|
NS_IMETHOD HasAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName, PRBool* aReturn) {
|
||||||
|
return mInner.HasAttributeNS(aNamespaceURI, aLocalName, aReturn);
|
||||||
|
}
|
||||||
|
|
||||||
// nsIDOMHTMLElement
|
// nsIDOMHTMLElement
|
||||||
NS_IMPL_IDOMHTMLELEMENT_USING_GENERIC(mInner)
|
NS_IMPL_IDOMHTMLELEMENT_USING_GENERIC(mInner)
|
||||||
|
|
|
@ -102,6 +102,39 @@ public:
|
||||||
nsIDOMNodeList** aReturn) {
|
nsIDOMNodeList** aReturn) {
|
||||||
return mInner.GetElementsByTagName(aTagname, aReturn);
|
return mInner.GetElementsByTagName(aTagname, aReturn);
|
||||||
}
|
}
|
||||||
|
NS_IMETHOD GetAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName, nsString& aReturn) {
|
||||||
|
return mInner.GetAttributeNS(aNamespaceURI, aLocalName, aReturn);
|
||||||
|
}
|
||||||
|
NS_IMETHOD SetAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aQualifiedName,
|
||||||
|
const nsString& aValue) {
|
||||||
|
return mInner.SetAttributeNS(aNamespaceURI, aQualifiedName, aValue);
|
||||||
|
}
|
||||||
|
NS_IMETHOD RemoveAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName) {
|
||||||
|
return mInner.RemoveAttributeNS(aNamespaceURI, aLocalName);
|
||||||
|
}
|
||||||
|
NS_IMETHOD GetAttributeNodeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName,
|
||||||
|
nsIDOMAttr** aReturn) {
|
||||||
|
return mInner.GetAttributeNodeNS(aNamespaceURI, aLocalName, aReturn);
|
||||||
|
}
|
||||||
|
NS_IMETHOD SetAttributeNodeNS(nsIDOMAttr* aNewAttr, nsIDOMAttr** aReturn) {
|
||||||
|
return mInner.SetAttributeNodeNS(aNewAttr, aReturn);
|
||||||
|
}
|
||||||
|
NS_IMETHOD GetElementsByTagNameNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName,
|
||||||
|
nsIDOMNodeList** aReturn) {
|
||||||
|
return mInner.GetElementsByTagNameNS(aNamespaceURI, aLocalName, aReturn);
|
||||||
|
}
|
||||||
|
NS_IMETHOD HasAttribute(const nsString& aName, PRBool* aReturn) {
|
||||||
|
return HasAttribute(aName, aReturn);
|
||||||
|
}
|
||||||
|
NS_IMETHOD HasAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName, PRBool* aReturn) {
|
||||||
|
return mInner.HasAttributeNS(aNamespaceURI, aLocalName, aReturn);
|
||||||
|
}
|
||||||
|
|
||||||
// nsIDOMHTMLElement
|
// nsIDOMHTMLElement
|
||||||
NS_IMPL_IDOMHTMLELEMENT_USING_GENERIC(mInner)
|
NS_IMPL_IDOMHTMLELEMENT_USING_GENERIC(mInner)
|
||||||
|
|
|
@ -117,6 +117,7 @@
|
||||||
#include "nsXULRadioElement.h"
|
#include "nsXULRadioElement.h"
|
||||||
#include "nsXULRadioGroupElement.h"
|
#include "nsXULRadioGroupElement.h"
|
||||||
#include "nsXULMenuListElement.h"
|
#include "nsXULMenuListElement.h"
|
||||||
|
#include "nsXULDocument.h"
|
||||||
|
|
||||||
#include "prlog.h"
|
#include "prlog.h"
|
||||||
#include "rdf.h"
|
#include "rdf.h"
|
||||||
|
@ -1577,6 +1578,180 @@ nsXULElement::GetElementsByTagName(const nsString& aName, nsIDOMNodeList** aRetu
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsXULElement::GetAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName, nsString& aReturn)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIAtom> name(dont_AddRef(NS_NewAtom(aLocalName)));
|
||||||
|
PRInt32 nsid;
|
||||||
|
|
||||||
|
gNameSpaceManager->GetNameSpaceID(aNamespaceURI, nsid);
|
||||||
|
|
||||||
|
if (nsid == kNameSpaceID_Unknown) {
|
||||||
|
// Unkonwn namespace means no attr...
|
||||||
|
|
||||||
|
aReturn.Truncate();
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
GetAttribute(nsid, name, aReturn);
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsXULElement::SetAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aQualifiedName,
|
||||||
|
const nsString& aValue)
|
||||||
|
{
|
||||||
|
NS_NOTYETIMPLEMENTED("write me!");
|
||||||
|
return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsXULElement::RemoveAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName)
|
||||||
|
{
|
||||||
|
PRInt32 nameSpaceId;
|
||||||
|
nsCOMPtr<nsIAtom> tag = dont_AddRef(NS_NewAtom(aLocalName));
|
||||||
|
|
||||||
|
if (!aNamespaceURI.EqualsWithConversion("*")) {
|
||||||
|
gNameSpaceManager->GetNameSpaceID(aNamespaceURI, nameSpaceId);
|
||||||
|
|
||||||
|
if (nameSpaceId == kNameSpaceID_Unknown) {
|
||||||
|
// Unkonwn namespace means no attr...
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult rv = UnsetAttribute(nameSpaceId, tag, PR_TRUE);
|
||||||
|
NS_ASSERTION(NS_SUCCEEDED(rv), "unable to remove attribute");
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsXULElement::GetAttributeNodeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName,
|
||||||
|
nsIDOMAttr** aReturn)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aReturn);
|
||||||
|
|
||||||
|
nsresult rv;
|
||||||
|
|
||||||
|
nsCOMPtr<nsIDOMNamedNodeMap> map;
|
||||||
|
rv = GetAttributes(getter_AddRefs(map));
|
||||||
|
if (NS_FAILED(rv)) return rv;
|
||||||
|
|
||||||
|
nsCOMPtr<nsIDOMNode> node;
|
||||||
|
rv = map->GetNamedItemNS(aNamespaceURI, aLocalName, getter_AddRefs(node));
|
||||||
|
if (NS_FAILED(rv)) return rv;
|
||||||
|
|
||||||
|
if (node) {
|
||||||
|
rv = node->QueryInterface(NS_GET_IID(nsIDOMAttr), (void**) aReturn);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
*aReturn = nsnull;
|
||||||
|
rv = NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsXULElement::SetAttributeNodeNS(nsIDOMAttr* aNewAttr,
|
||||||
|
nsIDOMAttr** aReturn)
|
||||||
|
{
|
||||||
|
NS_NOTYETIMPLEMENTED("write me!");
|
||||||
|
return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsXULElement::GetElementsByTagNameNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName,
|
||||||
|
nsIDOMNodeList** aReturn)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aReturn);
|
||||||
|
|
||||||
|
PRInt32 nameSpaceId = kNameSpaceID_Unknown;
|
||||||
|
|
||||||
|
nsRDFDOMNodeList* elements;
|
||||||
|
nsresult rv = nsRDFDOMNodeList::Create(&elements);
|
||||||
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIDOMNodeList> kungFuGrip;
|
||||||
|
kungFuGrip = dont_AddRef(NS_STATIC_CAST(nsIDOMNodeList *, elements));
|
||||||
|
|
||||||
|
if (!aNamespaceURI.EqualsWithConversion("*")) {
|
||||||
|
gNameSpaceManager->GetNameSpaceID(aNamespaceURI, nameSpaceId);
|
||||||
|
|
||||||
|
if (nameSpaceId == kNameSpaceID_Unknown) {
|
||||||
|
// Unkonwn namespace means no matches, we return an empty list...
|
||||||
|
|
||||||
|
*aReturn = elements;
|
||||||
|
NS_ADDREF(*aReturn);
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rv = nsXULDocument::GetElementsByTagName(NS_STATIC_CAST(nsIStyledContent *,
|
||||||
|
this), aLocalName,
|
||||||
|
nameSpaceId, elements);
|
||||||
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
|
*aReturn = elements;
|
||||||
|
NS_ADDREF(*aReturn);
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsXULElement::HasAttribute(const nsString& aName, PRBool* aReturn)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aReturn);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIAtom> name;
|
||||||
|
PRInt32 nsid;
|
||||||
|
|
||||||
|
nsresult rv = ParseAttributeString(aName, *getter_AddRefs(name), nsid);
|
||||||
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
|
nsAutoString tmp;
|
||||||
|
rv = GetAttribute(nsid, name, tmp);
|
||||||
|
|
||||||
|
*aReturn = rv == NS_CONTENT_ATTR_NOT_THERE ? PR_FALSE : PR_TRUE;
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsXULElement::HasAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName, PRBool* aReturn)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aReturn);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIAtom> name(dont_AddRef(NS_NewAtom(aLocalName)));
|
||||||
|
PRInt32 nsid;
|
||||||
|
|
||||||
|
gNameSpaceManager->GetNameSpaceID(aNamespaceURI, nsid);
|
||||||
|
|
||||||
|
if (nsid == kNameSpaceID_Unknown) {
|
||||||
|
// Unkonwn namespace means no attr...
|
||||||
|
|
||||||
|
*aReturn = PR_FALSE;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsAutoString tmp;
|
||||||
|
nsresult rv = GetAttribute(nsid, name, tmp);
|
||||||
|
|
||||||
|
*aReturn = rv == NS_CONTENT_ATTR_NOT_THERE ? PR_FALSE : PR_TRUE;
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsXULElement::GetElementsByAttribute(const nsString& aAttribute,
|
nsXULElement::GetElementsByAttribute(const nsString& aAttribute,
|
||||||
const nsString& aValue,
|
const nsString& aValue,
|
||||||
|
|
|
@ -402,6 +402,12 @@ public:
|
||||||
NS_IMETHOD GetAttributeStyleSheet(nsIHTMLStyleSheet** aResult);
|
NS_IMETHOD GetAttributeStyleSheet(nsIHTMLStyleSheet** aResult);
|
||||||
NS_IMETHOD GetInlineStyleSheet(nsIHTMLCSSStyleSheet** aResult);
|
NS_IMETHOD GetInlineStyleSheet(nsIHTMLCSSStyleSheet** aResult);
|
||||||
|
|
||||||
|
static nsresult
|
||||||
|
GetElementsByTagName(nsIContent* aContent,
|
||||||
|
const nsString& aTagName,
|
||||||
|
PRInt32 aNamespaceID,
|
||||||
|
nsRDFDOMNodeList* aElements);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Implementation methods
|
// Implementation methods
|
||||||
friend nsresult
|
friend nsresult
|
||||||
|
@ -431,12 +437,6 @@ protected:
|
||||||
nsIContent* aElement,
|
nsIContent* aElement,
|
||||||
void* aClosure);
|
void* aClosure);
|
||||||
|
|
||||||
static nsresult
|
|
||||||
GetElementsByTagName(nsIContent* aContent,
|
|
||||||
const nsString& aTagName,
|
|
||||||
PRInt32 aNamespaceID,
|
|
||||||
nsRDFDOMNodeList* aElements);
|
|
||||||
|
|
||||||
static nsresult
|
static nsresult
|
||||||
GetElementsByAttribute(nsIDOMNode* aNode,
|
GetElementsByAttribute(nsIDOMNode* aNode,
|
||||||
const nsString& aAttribute,
|
const nsString& aAttribute,
|
||||||
|
|
|
@ -55,6 +55,22 @@ public:
|
||||||
NS_IMETHOD RemoveAttributeNode(nsIDOMAttr* aOldAttr, nsIDOMAttr** aReturn)=0;
|
NS_IMETHOD RemoveAttributeNode(nsIDOMAttr* aOldAttr, nsIDOMAttr** aReturn)=0;
|
||||||
|
|
||||||
NS_IMETHOD GetElementsByTagName(const nsString& aName, nsIDOMNodeList** aReturn)=0;
|
NS_IMETHOD GetElementsByTagName(const nsString& aName, nsIDOMNodeList** aReturn)=0;
|
||||||
|
|
||||||
|
NS_IMETHOD GetAttributeNS(const nsString& aNamespaceURI, const nsString& aLocalName, nsString& aReturn)=0;
|
||||||
|
|
||||||
|
NS_IMETHOD SetAttributeNS(const nsString& aNamespaceURI, const nsString& aQualifiedName, const nsString& aValue)=0;
|
||||||
|
|
||||||
|
NS_IMETHOD RemoveAttributeNS(const nsString& aNamespaceURI, const nsString& aLocalName)=0;
|
||||||
|
|
||||||
|
NS_IMETHOD GetAttributeNodeNS(const nsString& aNamespaceURI, const nsString& aLocalName, nsIDOMAttr** aReturn)=0;
|
||||||
|
|
||||||
|
NS_IMETHOD SetAttributeNodeNS(nsIDOMAttr* aNewAttr, nsIDOMAttr** aReturn)=0;
|
||||||
|
|
||||||
|
NS_IMETHOD GetElementsByTagNameNS(const nsString& aNamespaceURI, const nsString& aLocalName, nsIDOMNodeList** aReturn)=0;
|
||||||
|
|
||||||
|
NS_IMETHOD HasAttribute(const nsString& aName, PRBool* aReturn)=0;
|
||||||
|
|
||||||
|
NS_IMETHOD HasAttributeNS(const nsString& aNamespaceURI, const nsString& aLocalName, PRBool* aReturn)=0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -67,6 +83,14 @@ public:
|
||||||
NS_IMETHOD SetAttributeNode(nsIDOMAttr* aNewAttr, nsIDOMAttr** aReturn); \
|
NS_IMETHOD SetAttributeNode(nsIDOMAttr* aNewAttr, nsIDOMAttr** aReturn); \
|
||||||
NS_IMETHOD RemoveAttributeNode(nsIDOMAttr* aOldAttr, nsIDOMAttr** aReturn); \
|
NS_IMETHOD RemoveAttributeNode(nsIDOMAttr* aOldAttr, nsIDOMAttr** aReturn); \
|
||||||
NS_IMETHOD GetElementsByTagName(const nsString& aName, nsIDOMNodeList** aReturn); \
|
NS_IMETHOD GetElementsByTagName(const nsString& aName, nsIDOMNodeList** aReturn); \
|
||||||
|
NS_IMETHOD GetAttributeNS(const nsString& aNamespaceURI, const nsString& aLocalName, nsString& aReturn); \
|
||||||
|
NS_IMETHOD SetAttributeNS(const nsString& aNamespaceURI, const nsString& aQualifiedName, const nsString& aValue); \
|
||||||
|
NS_IMETHOD RemoveAttributeNS(const nsString& aNamespaceURI, const nsString& aLocalName); \
|
||||||
|
NS_IMETHOD GetAttributeNodeNS(const nsString& aNamespaceURI, const nsString& aLocalName, nsIDOMAttr** aReturn); \
|
||||||
|
NS_IMETHOD SetAttributeNodeNS(nsIDOMAttr* aNewAttr, nsIDOMAttr** aReturn); \
|
||||||
|
NS_IMETHOD GetElementsByTagNameNS(const nsString& aNamespaceURI, const nsString& aLocalName, nsIDOMNodeList** aReturn); \
|
||||||
|
NS_IMETHOD HasAttribute(const nsString& aName, PRBool* aReturn); \
|
||||||
|
NS_IMETHOD HasAttributeNS(const nsString& aNamespaceURI, const nsString& aLocalName, PRBool* aReturn); \
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -79,6 +103,14 @@ public:
|
||||||
NS_IMETHOD SetAttributeNode(nsIDOMAttr* aNewAttr, nsIDOMAttr** aReturn) { return _to SetAttributeNode(aNewAttr, aReturn); } \
|
NS_IMETHOD SetAttributeNode(nsIDOMAttr* aNewAttr, nsIDOMAttr** aReturn) { return _to SetAttributeNode(aNewAttr, aReturn); } \
|
||||||
NS_IMETHOD RemoveAttributeNode(nsIDOMAttr* aOldAttr, nsIDOMAttr** aReturn) { return _to RemoveAttributeNode(aOldAttr, aReturn); } \
|
NS_IMETHOD RemoveAttributeNode(nsIDOMAttr* aOldAttr, nsIDOMAttr** aReturn) { return _to RemoveAttributeNode(aOldAttr, aReturn); } \
|
||||||
NS_IMETHOD GetElementsByTagName(const nsString& aName, nsIDOMNodeList** aReturn) { return _to GetElementsByTagName(aName, aReturn); } \
|
NS_IMETHOD GetElementsByTagName(const nsString& aName, nsIDOMNodeList** aReturn) { return _to GetElementsByTagName(aName, aReturn); } \
|
||||||
|
NS_IMETHOD GetAttributeNS(const nsString& aNamespaceURI, const nsString& aLocalName, nsString& aReturn) { return _to GetAttributeNS(aNamespaceURI, aLocalName, aReturn); } \
|
||||||
|
NS_IMETHOD SetAttributeNS(const nsString& aNamespaceURI, const nsString& aQualifiedName, const nsString& aValue) { return _to SetAttributeNS(aNamespaceURI, aQualifiedName, aValue); } \
|
||||||
|
NS_IMETHOD RemoveAttributeNS(const nsString& aNamespaceURI, const nsString& aLocalName) { return _to RemoveAttributeNS(aNamespaceURI, aLocalName); } \
|
||||||
|
NS_IMETHOD GetAttributeNodeNS(const nsString& aNamespaceURI, const nsString& aLocalName, nsIDOMAttr** aReturn) { return _to GetAttributeNodeNS(aNamespaceURI, aLocalName, aReturn); } \
|
||||||
|
NS_IMETHOD SetAttributeNodeNS(nsIDOMAttr* aNewAttr, nsIDOMAttr** aReturn) { return _to SetAttributeNodeNS(aNewAttr, aReturn); } \
|
||||||
|
NS_IMETHOD GetElementsByTagNameNS(const nsString& aNamespaceURI, const nsString& aLocalName, nsIDOMNodeList** aReturn) { return _to GetElementsByTagNameNS(aNamespaceURI, aLocalName, aReturn); } \
|
||||||
|
NS_IMETHOD HasAttribute(const nsString& aName, PRBool* aReturn) { return _to HasAttribute(aName, aReturn); } \
|
||||||
|
NS_IMETHOD HasAttributeNS(const nsString& aNamespaceURI, const nsString& aLocalName, PRBool* aReturn) { return _to HasAttributeNS(aNamespaceURI, aLocalName, aReturn); } \
|
||||||
|
|
||||||
|
|
||||||
extern "C" NS_DOM nsresult NS_InitElementClass(nsIScriptContext *aContext, void **aPrototype);
|
extern "C" NS_DOM nsresult NS_InitElementClass(nsIScriptContext *aContext, void **aPrototype);
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
interface Element : Node {
|
|
||||||
/* IID: { 0xa6cf9078, 0x15b3, 0x11d2, \
|
|
||||||
{ 0x93, 0x2e, 0x00, 0x80, 0x5f, 0x8a, 0xdd, 0x32 } } */
|
|
||||||
|
|
||||||
readonly attribute DOMString tagName;
|
|
||||||
DOMString getAttribute(in DOMString name);
|
|
||||||
void setAttribute(in DOMString name,
|
|
||||||
in DOMString value)
|
|
||||||
raises(DOMException);
|
|
||||||
void removeAttribute(in DOMString name)
|
|
||||||
raises(DOMException);
|
|
||||||
Attr getAttributeNode(in DOMString name);
|
|
||||||
Attr setAttributeNode(in Attr newAttr)
|
|
||||||
raises(DOMException);
|
|
||||||
Attr removeAttributeNode(in Attr oldAttr)
|
|
||||||
raises(DOMException);
|
|
||||||
NodeList getElementsByTagName(in DOMString name);
|
|
||||||
};
|
|
|
@ -266,11 +266,19 @@ enum nsDOMProp {
|
||||||
NS_DOM_PROP_DOMIMPLEMENTATION_HASFEATURE,
|
NS_DOM_PROP_DOMIMPLEMENTATION_HASFEATURE,
|
||||||
NS_DOM_PROP_ELEMENT_GETATTRIBUTE,
|
NS_DOM_PROP_ELEMENT_GETATTRIBUTE,
|
||||||
NS_DOM_PROP_ELEMENT_GETATTRIBUTENODE,
|
NS_DOM_PROP_ELEMENT_GETATTRIBUTENODE,
|
||||||
|
NS_DOM_PROP_ELEMENT_GETATTRIBUTENODENS,
|
||||||
|
NS_DOM_PROP_ELEMENT_GETATTRIBUTENS,
|
||||||
NS_DOM_PROP_ELEMENT_GETELEMENTSBYTAGNAME,
|
NS_DOM_PROP_ELEMENT_GETELEMENTSBYTAGNAME,
|
||||||
|
NS_DOM_PROP_ELEMENT_GETELEMENTSBYTAGNAMENS,
|
||||||
|
NS_DOM_PROP_ELEMENT_HASATTRIBUTE,
|
||||||
|
NS_DOM_PROP_ELEMENT_HASATTRIBUTENS,
|
||||||
NS_DOM_PROP_ELEMENT_REMOVEATTRIBUTE,
|
NS_DOM_PROP_ELEMENT_REMOVEATTRIBUTE,
|
||||||
NS_DOM_PROP_ELEMENT_REMOVEATTRIBUTENODE,
|
NS_DOM_PROP_ELEMENT_REMOVEATTRIBUTENODE,
|
||||||
|
NS_DOM_PROP_ELEMENT_REMOVEATTRIBUTENS,
|
||||||
NS_DOM_PROP_ELEMENT_SETATTRIBUTE,
|
NS_DOM_PROP_ELEMENT_SETATTRIBUTE,
|
||||||
NS_DOM_PROP_ELEMENT_SETATTRIBUTENODE,
|
NS_DOM_PROP_ELEMENT_SETATTRIBUTENODE,
|
||||||
|
NS_DOM_PROP_ELEMENT_SETATTRIBUTENODENS,
|
||||||
|
NS_DOM_PROP_ELEMENT_SETATTRIBUTENS,
|
||||||
NS_DOM_PROP_ELEMENT_TAGNAME,
|
NS_DOM_PROP_ELEMENT_TAGNAME,
|
||||||
NS_DOM_PROP_ENTITY_NOTATIONNAME,
|
NS_DOM_PROP_ENTITY_NOTATIONNAME,
|
||||||
NS_DOM_PROP_ENTITY_PUBLICID,
|
NS_DOM_PROP_ENTITY_PUBLICID,
|
||||||
|
|
|
@ -265,11 +265,19 @@
|
||||||
"domimplementation.hasfeature", \
|
"domimplementation.hasfeature", \
|
||||||
"element.getattribute", \
|
"element.getattribute", \
|
||||||
"element.getattributenode", \
|
"element.getattributenode", \
|
||||||
|
"element.getattributenodens", \
|
||||||
|
"element.getattributens", \
|
||||||
"element.getelementsbytagname", \
|
"element.getelementsbytagname", \
|
||||||
|
"element.getelementsbytagnamens", \
|
||||||
|
"element.hasattribute", \
|
||||||
|
"element.hasattributens", \
|
||||||
"element.removeattribute", \
|
"element.removeattribute", \
|
||||||
"element.removeattributenode", \
|
"element.removeattributenode", \
|
||||||
|
"element.removeattributens", \
|
||||||
"element.setattribute", \
|
"element.setattribute", \
|
||||||
"element.setattributenode", \
|
"element.setattributenode", \
|
||||||
|
"element.setattributenodens", \
|
||||||
|
"element.setattributens", \
|
||||||
"element.tagname", \
|
"element.tagname", \
|
||||||
"entity.notationname", \
|
"entity.notationname", \
|
||||||
"entity.publicid", \
|
"entity.publicid", \
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
/* AUTO-GENERATED. DO NOT EDIT!!! */
|
/* AUTO-GENERATED. DO NOT EDIT!!! */
|
||||||
|
|
||||||
#include "jsapi.h"
|
#include "jsapi.h"
|
||||||
|
#include "jsnum.h"
|
||||||
#include "nsJSUtils.h"
|
#include "nsJSUtils.h"
|
||||||
#include "nsDOMError.h"
|
#include "nsDOMError.h"
|
||||||
#include "nscore.h"
|
#include "nscore.h"
|
||||||
|
@ -469,6 +470,360 @@ ElementGetElementsByTagName(JSContext *cx, JSObject *obj, uintN argc, jsval *arg
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Native method GetAttributeNS
|
||||||
|
//
|
||||||
|
PR_STATIC_CALLBACK(JSBool)
|
||||||
|
ElementGetAttributeNS(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
|
||||||
|
{
|
||||||
|
nsIDOMElement *nativeThis = (nsIDOMElement*)nsJSUtils::nsGetNativeThis(cx, obj);
|
||||||
|
nsresult result = NS_OK;
|
||||||
|
nsAutoString nativeRet;
|
||||||
|
nsAutoString b0;
|
||||||
|
nsAutoString b1;
|
||||||
|
// If there's no private data, this must be the prototype, so ignore
|
||||||
|
if (nsnull == nativeThis) {
|
||||||
|
return JS_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
*rval = JSVAL_NULL;
|
||||||
|
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
|
||||||
|
if (!secMan)
|
||||||
|
return PR_FALSE;
|
||||||
|
result = secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_ELEMENT_GETATTRIBUTENS, PR_FALSE);
|
||||||
|
if (NS_FAILED(result)) {
|
||||||
|
return nsJSUtils::nsReportError(cx, obj, result);
|
||||||
|
}
|
||||||
|
if (argc < 2) {
|
||||||
|
return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR);
|
||||||
|
}
|
||||||
|
|
||||||
|
nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]);
|
||||||
|
nsJSUtils::nsConvertJSValToString(b1, cx, argv[1]);
|
||||||
|
|
||||||
|
result = nativeThis->GetAttributeNS(b0, b1, nativeRet);
|
||||||
|
if (NS_FAILED(result)) {
|
||||||
|
return nsJSUtils::nsReportError(cx, obj, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
nsJSUtils::nsConvertStringToJSVal(nativeRet, cx, rval);
|
||||||
|
}
|
||||||
|
|
||||||
|
return JS_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Native method SetAttributeNS
|
||||||
|
//
|
||||||
|
PR_STATIC_CALLBACK(JSBool)
|
||||||
|
ElementSetAttributeNS(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
|
||||||
|
{
|
||||||
|
nsIDOMElement *nativeThis = (nsIDOMElement*)nsJSUtils::nsGetNativeThis(cx, obj);
|
||||||
|
nsresult result = NS_OK;
|
||||||
|
nsAutoString b0;
|
||||||
|
nsAutoString b1;
|
||||||
|
nsAutoString b2;
|
||||||
|
// If there's no private data, this must be the prototype, so ignore
|
||||||
|
if (nsnull == nativeThis) {
|
||||||
|
return JS_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
*rval = JSVAL_NULL;
|
||||||
|
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
|
||||||
|
if (!secMan)
|
||||||
|
return PR_FALSE;
|
||||||
|
result = secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_ELEMENT_SETATTRIBUTENS, PR_FALSE);
|
||||||
|
if (NS_FAILED(result)) {
|
||||||
|
return nsJSUtils::nsReportError(cx, obj, result);
|
||||||
|
}
|
||||||
|
if (argc < 3) {
|
||||||
|
return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR);
|
||||||
|
}
|
||||||
|
|
||||||
|
nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]);
|
||||||
|
nsJSUtils::nsConvertJSValToString(b1, cx, argv[1]);
|
||||||
|
nsJSUtils::nsConvertJSValToString(b2, cx, argv[2]);
|
||||||
|
|
||||||
|
result = nativeThis->SetAttributeNS(b0, b1, b2);
|
||||||
|
if (NS_FAILED(result)) {
|
||||||
|
return nsJSUtils::nsReportError(cx, obj, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
*rval = JSVAL_VOID;
|
||||||
|
}
|
||||||
|
|
||||||
|
return JS_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Native method RemoveAttributeNS
|
||||||
|
//
|
||||||
|
PR_STATIC_CALLBACK(JSBool)
|
||||||
|
ElementRemoveAttributeNS(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
|
||||||
|
{
|
||||||
|
nsIDOMElement *nativeThis = (nsIDOMElement*)nsJSUtils::nsGetNativeThis(cx, obj);
|
||||||
|
nsresult result = NS_OK;
|
||||||
|
nsAutoString b0;
|
||||||
|
nsAutoString b1;
|
||||||
|
// If there's no private data, this must be the prototype, so ignore
|
||||||
|
if (nsnull == nativeThis) {
|
||||||
|
return JS_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
*rval = JSVAL_NULL;
|
||||||
|
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
|
||||||
|
if (!secMan)
|
||||||
|
return PR_FALSE;
|
||||||
|
result = secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_ELEMENT_REMOVEATTRIBUTENS, PR_FALSE);
|
||||||
|
if (NS_FAILED(result)) {
|
||||||
|
return nsJSUtils::nsReportError(cx, obj, result);
|
||||||
|
}
|
||||||
|
if (argc < 2) {
|
||||||
|
return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR);
|
||||||
|
}
|
||||||
|
|
||||||
|
nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]);
|
||||||
|
nsJSUtils::nsConvertJSValToString(b1, cx, argv[1]);
|
||||||
|
|
||||||
|
result = nativeThis->RemoveAttributeNS(b0, b1);
|
||||||
|
if (NS_FAILED(result)) {
|
||||||
|
return nsJSUtils::nsReportError(cx, obj, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
*rval = JSVAL_VOID;
|
||||||
|
}
|
||||||
|
|
||||||
|
return JS_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Native method GetAttributeNodeNS
|
||||||
|
//
|
||||||
|
PR_STATIC_CALLBACK(JSBool)
|
||||||
|
ElementGetAttributeNodeNS(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
|
||||||
|
{
|
||||||
|
nsIDOMElement *nativeThis = (nsIDOMElement*)nsJSUtils::nsGetNativeThis(cx, obj);
|
||||||
|
nsresult result = NS_OK;
|
||||||
|
nsIDOMAttr* nativeRet;
|
||||||
|
nsAutoString b0;
|
||||||
|
nsAutoString b1;
|
||||||
|
// If there's no private data, this must be the prototype, so ignore
|
||||||
|
if (nsnull == nativeThis) {
|
||||||
|
return JS_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
*rval = JSVAL_NULL;
|
||||||
|
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
|
||||||
|
if (!secMan)
|
||||||
|
return PR_FALSE;
|
||||||
|
result = secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_ELEMENT_GETATTRIBUTENODENS, PR_FALSE);
|
||||||
|
if (NS_FAILED(result)) {
|
||||||
|
return nsJSUtils::nsReportError(cx, obj, result);
|
||||||
|
}
|
||||||
|
if (argc < 2) {
|
||||||
|
return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR);
|
||||||
|
}
|
||||||
|
|
||||||
|
nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]);
|
||||||
|
nsJSUtils::nsConvertJSValToString(b1, cx, argv[1]);
|
||||||
|
|
||||||
|
result = nativeThis->GetAttributeNodeNS(b0, b1, &nativeRet);
|
||||||
|
if (NS_FAILED(result)) {
|
||||||
|
return nsJSUtils::nsReportError(cx, obj, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval);
|
||||||
|
}
|
||||||
|
|
||||||
|
return JS_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Native method SetAttributeNodeNS
|
||||||
|
//
|
||||||
|
PR_STATIC_CALLBACK(JSBool)
|
||||||
|
ElementSetAttributeNodeNS(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
|
||||||
|
{
|
||||||
|
nsIDOMElement *nativeThis = (nsIDOMElement*)nsJSUtils::nsGetNativeThis(cx, obj);
|
||||||
|
nsresult result = NS_OK;
|
||||||
|
nsIDOMAttr* nativeRet;
|
||||||
|
nsCOMPtr<nsIDOMAttr> b0;
|
||||||
|
// If there's no private data, this must be the prototype, so ignore
|
||||||
|
if (nsnull == nativeThis) {
|
||||||
|
return JS_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
*rval = JSVAL_NULL;
|
||||||
|
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
|
||||||
|
if (!secMan)
|
||||||
|
return PR_FALSE;
|
||||||
|
result = secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_ELEMENT_SETATTRIBUTENODENS, PR_FALSE);
|
||||||
|
if (NS_FAILED(result)) {
|
||||||
|
return nsJSUtils::nsReportError(cx, obj, result);
|
||||||
|
}
|
||||||
|
if (argc < 1) {
|
||||||
|
return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)(void**)getter_AddRefs(b0),
|
||||||
|
kIAttrIID,
|
||||||
|
NS_ConvertASCIItoUCS2("Attr"),
|
||||||
|
cx,
|
||||||
|
argv[0])) {
|
||||||
|
return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_NOT_OBJECT_ERR);
|
||||||
|
}
|
||||||
|
|
||||||
|
result = nativeThis->SetAttributeNodeNS(b0, &nativeRet);
|
||||||
|
if (NS_FAILED(result)) {
|
||||||
|
return nsJSUtils::nsReportError(cx, obj, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval);
|
||||||
|
}
|
||||||
|
|
||||||
|
return JS_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Native method GetElementsByTagNameNS
|
||||||
|
//
|
||||||
|
PR_STATIC_CALLBACK(JSBool)
|
||||||
|
ElementGetElementsByTagNameNS(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
|
||||||
|
{
|
||||||
|
nsIDOMElement *nativeThis = (nsIDOMElement*)nsJSUtils::nsGetNativeThis(cx, obj);
|
||||||
|
nsresult result = NS_OK;
|
||||||
|
nsIDOMNodeList* nativeRet;
|
||||||
|
nsAutoString b0;
|
||||||
|
nsAutoString b1;
|
||||||
|
// If there's no private data, this must be the prototype, so ignore
|
||||||
|
if (nsnull == nativeThis) {
|
||||||
|
return JS_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
*rval = JSVAL_NULL;
|
||||||
|
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
|
||||||
|
if (!secMan)
|
||||||
|
return PR_FALSE;
|
||||||
|
result = secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_ELEMENT_GETELEMENTSBYTAGNAMENS, PR_FALSE);
|
||||||
|
if (NS_FAILED(result)) {
|
||||||
|
return nsJSUtils::nsReportError(cx, obj, result);
|
||||||
|
}
|
||||||
|
if (argc < 2) {
|
||||||
|
return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR);
|
||||||
|
}
|
||||||
|
|
||||||
|
nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]);
|
||||||
|
nsJSUtils::nsConvertJSValToString(b1, cx, argv[1]);
|
||||||
|
|
||||||
|
result = nativeThis->GetElementsByTagNameNS(b0, b1, &nativeRet);
|
||||||
|
if (NS_FAILED(result)) {
|
||||||
|
return nsJSUtils::nsReportError(cx, obj, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
nsJSUtils::nsConvertObjectToJSVal(nativeRet, cx, obj, rval);
|
||||||
|
}
|
||||||
|
|
||||||
|
return JS_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Native method HasAttribute
|
||||||
|
//
|
||||||
|
PR_STATIC_CALLBACK(JSBool)
|
||||||
|
ElementHasAttribute(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
|
||||||
|
{
|
||||||
|
nsIDOMElement *nativeThis = (nsIDOMElement*)nsJSUtils::nsGetNativeThis(cx, obj);
|
||||||
|
nsresult result = NS_OK;
|
||||||
|
PRBool nativeRet;
|
||||||
|
nsAutoString b0;
|
||||||
|
// If there's no private data, this must be the prototype, so ignore
|
||||||
|
if (nsnull == nativeThis) {
|
||||||
|
return JS_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
*rval = JSVAL_NULL;
|
||||||
|
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
|
||||||
|
if (!secMan)
|
||||||
|
return PR_FALSE;
|
||||||
|
result = secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_ELEMENT_HASATTRIBUTE, PR_FALSE);
|
||||||
|
if (NS_FAILED(result)) {
|
||||||
|
return nsJSUtils::nsReportError(cx, obj, result);
|
||||||
|
}
|
||||||
|
if (argc < 1) {
|
||||||
|
return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR);
|
||||||
|
}
|
||||||
|
|
||||||
|
nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]);
|
||||||
|
|
||||||
|
result = nativeThis->HasAttribute(b0, &nativeRet);
|
||||||
|
if (NS_FAILED(result)) {
|
||||||
|
return nsJSUtils::nsReportError(cx, obj, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
*rval = BOOLEAN_TO_JSVAL(nativeRet);
|
||||||
|
}
|
||||||
|
|
||||||
|
return JS_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Native method HasAttributeNS
|
||||||
|
//
|
||||||
|
PR_STATIC_CALLBACK(JSBool)
|
||||||
|
ElementHasAttributeNS(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
|
||||||
|
{
|
||||||
|
nsIDOMElement *nativeThis = (nsIDOMElement*)nsJSUtils::nsGetNativeThis(cx, obj);
|
||||||
|
nsresult result = NS_OK;
|
||||||
|
PRBool nativeRet;
|
||||||
|
nsAutoString b0;
|
||||||
|
nsAutoString b1;
|
||||||
|
// If there's no private data, this must be the prototype, so ignore
|
||||||
|
if (nsnull == nativeThis) {
|
||||||
|
return JS_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
*rval = JSVAL_NULL;
|
||||||
|
nsIScriptSecurityManager *secMan = nsJSUtils::nsGetSecurityManager(cx, obj);
|
||||||
|
if (!secMan)
|
||||||
|
return PR_FALSE;
|
||||||
|
result = secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_ELEMENT_HASATTRIBUTENS, PR_FALSE);
|
||||||
|
if (NS_FAILED(result)) {
|
||||||
|
return nsJSUtils::nsReportError(cx, obj, result);
|
||||||
|
}
|
||||||
|
if (argc < 2) {
|
||||||
|
return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR);
|
||||||
|
}
|
||||||
|
|
||||||
|
nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]);
|
||||||
|
nsJSUtils::nsConvertJSValToString(b1, cx, argv[1]);
|
||||||
|
|
||||||
|
result = nativeThis->HasAttributeNS(b0, b1, &nativeRet);
|
||||||
|
if (NS_FAILED(result)) {
|
||||||
|
return nsJSUtils::nsReportError(cx, obj, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
*rval = BOOLEAN_TO_JSVAL(nativeRet);
|
||||||
|
}
|
||||||
|
|
||||||
|
return JS_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************/
|
/***********************************************************************/
|
||||||
//
|
//
|
||||||
// class for Element
|
// class for Element
|
||||||
|
@ -511,6 +866,14 @@ static JSFunctionSpec ElementMethods[] =
|
||||||
{"setAttributeNode", ElementSetAttributeNode, 1},
|
{"setAttributeNode", ElementSetAttributeNode, 1},
|
||||||
{"removeAttributeNode", ElementRemoveAttributeNode, 1},
|
{"removeAttributeNode", ElementRemoveAttributeNode, 1},
|
||||||
{"getElementsByTagName", ElementGetElementsByTagName, 1},
|
{"getElementsByTagName", ElementGetElementsByTagName, 1},
|
||||||
|
{"getAttributeNS", ElementGetAttributeNS, 2},
|
||||||
|
{"setAttributeNS", ElementSetAttributeNS, 3},
|
||||||
|
{"removeAttributeNS", ElementRemoveAttributeNS, 2},
|
||||||
|
{"getAttributeNodeNS", ElementGetAttributeNodeNS, 2},
|
||||||
|
{"setAttributeNodeNS", ElementSetAttributeNodeNS, 1},
|
||||||
|
{"getElementsByTagNameNS", ElementGetElementsByTagNameNS, 2},
|
||||||
|
{"hasAttribute", ElementHasAttribute, 1},
|
||||||
|
{"hasAttributeNS", ElementHasAttributeNS, 2},
|
||||||
{0}
|
{0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -843,6 +843,209 @@ nsGenericElement::GetElementsByTagName(const nsString& aTagname,
|
||||||
return list->QueryInterface(kIDOMNodeListIID, (void **)aReturn);
|
return list->QueryInterface(kIDOMNodeListIID, (void **)aReturn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
nsGenericElement::GetAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName, nsString& aReturn)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIAtom> name(dont_AddRef(NS_NewAtom(aLocalName)));
|
||||||
|
PRInt32 nsid;
|
||||||
|
|
||||||
|
nsCOMPtr<nsINodeInfoManager> nimgr;
|
||||||
|
mNodeInfo->GetNodeInfoManager(*getter_AddRefs(nimgr));
|
||||||
|
NS_ENSURE_TRUE(nimgr, NS_ERROR_FAILURE);
|
||||||
|
|
||||||
|
nsCOMPtr<nsINameSpaceManager> nsmgr;
|
||||||
|
nimgr->GetNamespaceManager(*getter_AddRefs(nsmgr));
|
||||||
|
NS_ENSURE_TRUE(nsmgr, NS_ERROR_FAILURE);
|
||||||
|
|
||||||
|
nsmgr->GetNameSpaceID(aNamespaceURI, nsid);
|
||||||
|
|
||||||
|
if (nsid == kNameSpaceID_Unknown) {
|
||||||
|
// Unkonwn namespace means no attr...
|
||||||
|
|
||||||
|
aReturn.Truncate();
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
mContent->GetAttribute(nsid, name, aReturn);
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
nsGenericElement::SetAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aQualifiedName,
|
||||||
|
const nsString& aValue)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsINodeInfoManager> nimgr;
|
||||||
|
mNodeInfo->GetNodeInfoManager(*getter_AddRefs(nimgr));
|
||||||
|
NS_ENSURE_TRUE(nimgr, NS_ERROR_FAILURE);
|
||||||
|
|
||||||
|
nsCOMPtr<nsINodeInfo> ni;
|
||||||
|
nsresult rv = nimgr->GetNodeInfo(aQualifiedName, aNamespaceURI,
|
||||||
|
*getter_AddRefs(ni));
|
||||||
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIAtom> name;
|
||||||
|
PRInt32 nsid;
|
||||||
|
|
||||||
|
ni->GetNameAtom(*getter_AddRefs(name));
|
||||||
|
ni->GetNamespaceID(nsid);
|
||||||
|
|
||||||
|
return mContent->SetAttribute(nsid, name, aValue, PR_TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
|
||||||
|
nsGenericElement::RemoveAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIAtom> name(dont_AddRef(NS_NewAtom(aLocalName)));
|
||||||
|
PRInt32 nsid;
|
||||||
|
|
||||||
|
nsCOMPtr<nsINodeInfoManager> nimgr;
|
||||||
|
mNodeInfo->GetNodeInfoManager(*getter_AddRefs(nimgr));
|
||||||
|
NS_ENSURE_TRUE(nimgr, NS_ERROR_FAILURE);
|
||||||
|
|
||||||
|
nsCOMPtr<nsINameSpaceManager> nsmgr;
|
||||||
|
nimgr->GetNamespaceManager(*getter_AddRefs(nsmgr));
|
||||||
|
NS_ENSURE_TRUE(nsmgr, NS_ERROR_FAILURE);
|
||||||
|
|
||||||
|
nsmgr->GetNameSpaceID(aNamespaceURI, nsid);
|
||||||
|
|
||||||
|
if (nsid == kNameSpaceID_Unknown) {
|
||||||
|
// Unkonwn namespace means no attr...
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsAutoString tmp;
|
||||||
|
mContent->UnsetAttribute(nsid, name, PR_TRUE);
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
nsGenericElement::GetAttributeNodeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName,
|
||||||
|
nsIDOMAttr** aReturn)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aReturn);
|
||||||
|
|
||||||
|
nsIDOMNamedNodeMap* map;
|
||||||
|
nsresult result = GetAttributes(&map);
|
||||||
|
|
||||||
|
*aReturn = nsnull;
|
||||||
|
if (NS_OK == result) {
|
||||||
|
nsIDOMNode* node;
|
||||||
|
result = map->GetNamedItemNS(aNamespaceURI, aLocalName, &node);
|
||||||
|
if ((NS_OK == result) && (nsnull != node)) {
|
||||||
|
result = node->QueryInterface(kIDOMAttrIID, (void **)aReturn);
|
||||||
|
NS_IF_RELEASE(node);
|
||||||
|
}
|
||||||
|
NS_RELEASE(map);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
nsGenericElement::SetAttributeNodeNS(nsIDOMAttr* aNewAttr,
|
||||||
|
nsIDOMAttr** aReturn)
|
||||||
|
{
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
nsGenericElement::GetElementsByTagNameNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName,
|
||||||
|
nsIDOMNodeList** aReturn)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIAtom> nameAtom(dont_AddRef(NS_NewAtom(aLocalName)));
|
||||||
|
PRInt32 nameSpaceId = kNameSpaceID_Unknown;
|
||||||
|
|
||||||
|
nsContentList* list = nsnull;
|
||||||
|
|
||||||
|
if (!aNamespaceURI.EqualsWithConversion("*")) {
|
||||||
|
nsCOMPtr<nsINodeInfoManager> nimgr;
|
||||||
|
mNodeInfo->GetNodeInfoManager(*getter_AddRefs(nimgr));
|
||||||
|
NS_ENSURE_TRUE(nimgr, NS_ERROR_FAILURE);
|
||||||
|
|
||||||
|
nsCOMPtr<nsINameSpaceManager> nsmgr;
|
||||||
|
nimgr->GetNamespaceManager(*getter_AddRefs(nsmgr));
|
||||||
|
NS_ENSURE_TRUE(nsmgr, NS_ERROR_FAILURE);
|
||||||
|
|
||||||
|
nsmgr->GetNameSpaceID(aNamespaceURI, nameSpaceId);
|
||||||
|
|
||||||
|
if (nameSpaceId == kNameSpaceID_Unknown) {
|
||||||
|
// Unkonwn namespace means no matches, we create an empty list...
|
||||||
|
list = new nsContentList(mDocument, nsnull, kNameSpaceID_None);
|
||||||
|
NS_ENSURE_TRUE(list, NS_ERROR_OUT_OF_MEMORY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!list) {
|
||||||
|
list = new nsContentList(mDocument, nameAtom, nameSpaceId, mContent);
|
||||||
|
NS_ENSURE_TRUE(list, NS_ERROR_OUT_OF_MEMORY);
|
||||||
|
}
|
||||||
|
|
||||||
|
return list->QueryInterface(kIDOMNodeListIID, (void **)aReturn);
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
nsGenericElement::HasAttribute(const nsString& aName, PRBool* aReturn)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aReturn);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIAtom> name;
|
||||||
|
PRInt32 nsid;
|
||||||
|
|
||||||
|
nsresult rv = mContent->ParseAttributeString(aName, *getter_AddRefs(name),
|
||||||
|
nsid);
|
||||||
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
|
nsAutoString tmp;
|
||||||
|
rv = mContent->GetAttribute(nsid, name, tmp);
|
||||||
|
|
||||||
|
*aReturn = rv == NS_CONTENT_ATTR_NOT_THERE ? PR_FALSE : PR_TRUE;
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
nsGenericElement::HasAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName, PRBool* aReturn)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aReturn);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIAtom> name(dont_AddRef(NS_NewAtom(aLocalName)));
|
||||||
|
PRInt32 nsid;
|
||||||
|
|
||||||
|
nsCOMPtr<nsINodeInfoManager> nimgr;
|
||||||
|
mNodeInfo->GetNodeInfoManager(*getter_AddRefs(nimgr));
|
||||||
|
NS_ENSURE_TRUE(nimgr, NS_ERROR_FAILURE);
|
||||||
|
|
||||||
|
nsCOMPtr<nsINameSpaceManager> nsmgr;
|
||||||
|
nimgr->GetNamespaceManager(*getter_AddRefs(nsmgr));
|
||||||
|
NS_ENSURE_TRUE(nsmgr, NS_ERROR_FAILURE);
|
||||||
|
|
||||||
|
nsmgr->GetNameSpaceID(aNamespaceURI, nsid);
|
||||||
|
|
||||||
|
if (nsid == kNameSpaceID_Unknown) {
|
||||||
|
// Unkonwn namespace means no attr...
|
||||||
|
|
||||||
|
*aReturn = PR_FALSE;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsAutoString tmp;
|
||||||
|
nsresult rv = mContent->GetAttribute(nsid, name, tmp);
|
||||||
|
|
||||||
|
*aReturn = rv == NS_CONTENT_ATTR_NOT_THERE ? PR_FALSE : PR_TRUE;
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
nsGenericElement::JoinTextNodes(nsIContent* aFirst,
|
nsGenericElement::JoinTextNodes(nsIContent* aFirst,
|
||||||
nsIContent* aSecond)
|
nsIContent* aSecond)
|
||||||
|
|
|
@ -155,6 +155,23 @@ public:
|
||||||
nsresult RemoveAttributeNode(nsIDOMAttr* aOldAttr, nsIDOMAttr** aReturn);
|
nsresult RemoveAttributeNode(nsIDOMAttr* aOldAttr, nsIDOMAttr** aReturn);
|
||||||
nsresult GetElementsByTagName(const nsString& aTagname,
|
nsresult GetElementsByTagName(const nsString& aTagname,
|
||||||
nsIDOMNodeList** aReturn);
|
nsIDOMNodeList** aReturn);
|
||||||
|
nsresult GetAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName, nsString& aReturn);
|
||||||
|
nsresult SetAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aQualifiedName,
|
||||||
|
const nsString& aValue);
|
||||||
|
nsresult RemoveAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName);
|
||||||
|
nsresult GetAttributeNodeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName,
|
||||||
|
nsIDOMAttr** aReturn);
|
||||||
|
nsresult SetAttributeNodeNS(nsIDOMAttr* aNewAttr, nsIDOMAttr** aReturn);
|
||||||
|
nsresult GetElementsByTagNameNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName,
|
||||||
|
nsIDOMNodeList** aReturn);
|
||||||
|
nsresult HasAttribute(const nsString& aName, PRBool* aReturn);
|
||||||
|
nsresult HasAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName, PRBool* aReturn);
|
||||||
|
|
||||||
// nsIScriptObjectOwner interface
|
// nsIScriptObjectOwner interface
|
||||||
nsresult GetScriptObject(nsIScriptContext* aContext, void** aScriptObject);
|
nsresult GetScriptObject(nsIScriptContext* aContext, void** aScriptObject);
|
||||||
|
@ -464,6 +481,39 @@ public:
|
||||||
NS_IMETHOD GetElementsByTagName(const nsString& aTagname, \
|
NS_IMETHOD GetElementsByTagName(const nsString& aTagname, \
|
||||||
nsIDOMNodeList** aReturn) { \
|
nsIDOMNodeList** aReturn) { \
|
||||||
return _g.GetElementsByTagName(aTagname, aReturn); \
|
return _g.GetElementsByTagName(aTagname, aReturn); \
|
||||||
|
} \
|
||||||
|
NS_IMETHOD GetAttributeNS(const nsString& aNamespaceURI, \
|
||||||
|
const nsString& aLocalName, nsString& aReturn) { \
|
||||||
|
return _g.GetAttributeNS(aNamespaceURI, aLocalName, aReturn); \
|
||||||
|
} \
|
||||||
|
NS_IMETHOD SetAttributeNS(const nsString& aNamespaceURI, \
|
||||||
|
const nsString& aQualifiedName, \
|
||||||
|
const nsString& aValue) { \
|
||||||
|
return _g.SetAttributeNS(aNamespaceURI, aQualifiedName, aValue); \
|
||||||
|
} \
|
||||||
|
NS_IMETHOD RemoveAttributeNS(const nsString& aNamespaceURI, \
|
||||||
|
const nsString& aLocalName) { \
|
||||||
|
return _g.RemoveAttributeNS(aNamespaceURI, aLocalName); \
|
||||||
|
} \
|
||||||
|
NS_IMETHOD GetAttributeNodeNS(const nsString& aNamespaceURI, \
|
||||||
|
const nsString& aLocalName, \
|
||||||
|
nsIDOMAttr** aReturn) { \
|
||||||
|
return _g.GetAttributeNodeNS(aNamespaceURI, aLocalName, aReturn); \
|
||||||
|
} \
|
||||||
|
NS_IMETHOD SetAttributeNodeNS(nsIDOMAttr* aNewAttr, nsIDOMAttr** aReturn) { \
|
||||||
|
return _g.SetAttributeNodeNS(aNewAttr, aReturn); \
|
||||||
|
} \
|
||||||
|
NS_IMETHOD GetElementsByTagNameNS(const nsString& aNamespaceURI, \
|
||||||
|
const nsString& aLocalName, \
|
||||||
|
nsIDOMNodeList** aReturn) { \
|
||||||
|
return _g.GetElementsByTagNameNS(aNamespaceURI, aLocalName, aReturn); \
|
||||||
|
} \
|
||||||
|
NS_IMETHOD HasAttribute(const nsString& aName, PRBool* aReturn) { \
|
||||||
|
return _g.HasAttribute(aName, aReturn); \
|
||||||
|
} \
|
||||||
|
NS_IMETHOD HasAttributeNS(const nsString& aNamespaceURI, \
|
||||||
|
const nsString& aLocalName, PRBool* aReturn) { \
|
||||||
|
return _g.HasAttributeNS(aNamespaceURI, aLocalName, aReturn); \
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -124,6 +124,39 @@ public:
|
||||||
nsIDOMNodeList** aReturn) {
|
nsIDOMNodeList** aReturn) {
|
||||||
return mInner.GetElementsByTagName(aTagname, aReturn);
|
return mInner.GetElementsByTagName(aTagname, aReturn);
|
||||||
}
|
}
|
||||||
|
NS_IMETHOD GetAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName, nsString& aReturn) {
|
||||||
|
return mInner.GetAttributeNS(aNamespaceURI, aLocalName, aReturn);
|
||||||
|
}
|
||||||
|
NS_IMETHOD SetAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aQualifiedName,
|
||||||
|
const nsString& aValue) {
|
||||||
|
return mInner.SetAttributeNS(aNamespaceURI, aQualifiedName, aValue);
|
||||||
|
}
|
||||||
|
NS_IMETHOD RemoveAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName) {
|
||||||
|
return mInner.RemoveAttributeNS(aNamespaceURI, aLocalName);
|
||||||
|
}
|
||||||
|
NS_IMETHOD GetAttributeNodeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName,
|
||||||
|
nsIDOMAttr** aReturn) {
|
||||||
|
return mInner.GetAttributeNodeNS(aNamespaceURI, aLocalName, aReturn);
|
||||||
|
}
|
||||||
|
NS_IMETHOD SetAttributeNodeNS(nsIDOMAttr* aNewAttr, nsIDOMAttr** aReturn) {
|
||||||
|
return mInner.SetAttributeNodeNS(aNewAttr, aReturn);
|
||||||
|
}
|
||||||
|
NS_IMETHOD GetElementsByTagNameNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName,
|
||||||
|
nsIDOMNodeList** aReturn) {
|
||||||
|
return mInner.GetElementsByTagNameNS(aNamespaceURI, aLocalName, aReturn);
|
||||||
|
}
|
||||||
|
NS_IMETHOD HasAttribute(const nsString& aName, PRBool* aReturn) {
|
||||||
|
return mInner.HasAttribute(aName, aReturn);
|
||||||
|
}
|
||||||
|
NS_IMETHOD HasAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName, PRBool* aReturn) {
|
||||||
|
return mInner.HasAttributeNS(aNamespaceURI, aLocalName, aReturn);
|
||||||
|
}
|
||||||
|
|
||||||
// nsIDOMHTMLElement
|
// nsIDOMHTMLElement
|
||||||
NS_IMPL_IDOMHTMLELEMENT_USING_GENERIC(mInner)
|
NS_IMPL_IDOMHTMLELEMENT_USING_GENERIC(mInner)
|
||||||
|
|
|
@ -102,6 +102,39 @@ public:
|
||||||
nsIDOMNodeList** aReturn) {
|
nsIDOMNodeList** aReturn) {
|
||||||
return mInner.GetElementsByTagName(aTagname, aReturn);
|
return mInner.GetElementsByTagName(aTagname, aReturn);
|
||||||
}
|
}
|
||||||
|
NS_IMETHOD GetAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName, nsString& aReturn) {
|
||||||
|
return mInner.GetAttributeNS(aNamespaceURI, aLocalName, aReturn);
|
||||||
|
}
|
||||||
|
NS_IMETHOD SetAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aQualifiedName,
|
||||||
|
const nsString& aValue) {
|
||||||
|
return mInner.SetAttributeNS(aNamespaceURI, aQualifiedName, aValue);
|
||||||
|
}
|
||||||
|
NS_IMETHOD RemoveAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName) {
|
||||||
|
return mInner.RemoveAttributeNS(aNamespaceURI, aLocalName);
|
||||||
|
}
|
||||||
|
NS_IMETHOD GetAttributeNodeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName,
|
||||||
|
nsIDOMAttr** aReturn) {
|
||||||
|
return mInner.GetAttributeNodeNS(aNamespaceURI, aLocalName, aReturn);
|
||||||
|
}
|
||||||
|
NS_IMETHOD SetAttributeNodeNS(nsIDOMAttr* aNewAttr, nsIDOMAttr** aReturn) {
|
||||||
|
return mInner.SetAttributeNodeNS(aNewAttr, aReturn);
|
||||||
|
}
|
||||||
|
NS_IMETHOD GetElementsByTagNameNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName,
|
||||||
|
nsIDOMNodeList** aReturn) {
|
||||||
|
return mInner.GetElementsByTagNameNS(aNamespaceURI, aLocalName, aReturn);
|
||||||
|
}
|
||||||
|
NS_IMETHOD HasAttribute(const nsString& aName, PRBool* aReturn) {
|
||||||
|
return HasAttribute(aName, aReturn);
|
||||||
|
}
|
||||||
|
NS_IMETHOD HasAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName, PRBool* aReturn) {
|
||||||
|
return mInner.HasAttributeNS(aNamespaceURI, aLocalName, aReturn);
|
||||||
|
}
|
||||||
|
|
||||||
// nsIDOMHTMLElement
|
// nsIDOMHTMLElement
|
||||||
NS_IMPL_IDOMHTMLELEMENT_USING_GENERIC(mInner)
|
NS_IMPL_IDOMHTMLELEMENT_USING_GENERIC(mInner)
|
||||||
|
|
|
@ -402,6 +402,12 @@ public:
|
||||||
NS_IMETHOD GetAttributeStyleSheet(nsIHTMLStyleSheet** aResult);
|
NS_IMETHOD GetAttributeStyleSheet(nsIHTMLStyleSheet** aResult);
|
||||||
NS_IMETHOD GetInlineStyleSheet(nsIHTMLCSSStyleSheet** aResult);
|
NS_IMETHOD GetInlineStyleSheet(nsIHTMLCSSStyleSheet** aResult);
|
||||||
|
|
||||||
|
static nsresult
|
||||||
|
GetElementsByTagName(nsIContent* aContent,
|
||||||
|
const nsString& aTagName,
|
||||||
|
PRInt32 aNamespaceID,
|
||||||
|
nsRDFDOMNodeList* aElements);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Implementation methods
|
// Implementation methods
|
||||||
friend nsresult
|
friend nsresult
|
||||||
|
@ -431,12 +437,6 @@ protected:
|
||||||
nsIContent* aElement,
|
nsIContent* aElement,
|
||||||
void* aClosure);
|
void* aClosure);
|
||||||
|
|
||||||
static nsresult
|
|
||||||
GetElementsByTagName(nsIContent* aContent,
|
|
||||||
const nsString& aTagName,
|
|
||||||
PRInt32 aNamespaceID,
|
|
||||||
nsRDFDOMNodeList* aElements);
|
|
||||||
|
|
||||||
static nsresult
|
static nsresult
|
||||||
GetElementsByAttribute(nsIDOMNode* aNode,
|
GetElementsByAttribute(nsIDOMNode* aNode,
|
||||||
const nsString& aAttribute,
|
const nsString& aAttribute,
|
||||||
|
|
|
@ -117,6 +117,7 @@
|
||||||
#include "nsXULRadioElement.h"
|
#include "nsXULRadioElement.h"
|
||||||
#include "nsXULRadioGroupElement.h"
|
#include "nsXULRadioGroupElement.h"
|
||||||
#include "nsXULMenuListElement.h"
|
#include "nsXULMenuListElement.h"
|
||||||
|
#include "nsXULDocument.h"
|
||||||
|
|
||||||
#include "prlog.h"
|
#include "prlog.h"
|
||||||
#include "rdf.h"
|
#include "rdf.h"
|
||||||
|
@ -1577,6 +1578,180 @@ nsXULElement::GetElementsByTagName(const nsString& aName, nsIDOMNodeList** aRetu
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsXULElement::GetAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName, nsString& aReturn)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIAtom> name(dont_AddRef(NS_NewAtom(aLocalName)));
|
||||||
|
PRInt32 nsid;
|
||||||
|
|
||||||
|
gNameSpaceManager->GetNameSpaceID(aNamespaceURI, nsid);
|
||||||
|
|
||||||
|
if (nsid == kNameSpaceID_Unknown) {
|
||||||
|
// Unkonwn namespace means no attr...
|
||||||
|
|
||||||
|
aReturn.Truncate();
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
GetAttribute(nsid, name, aReturn);
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsXULElement::SetAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aQualifiedName,
|
||||||
|
const nsString& aValue)
|
||||||
|
{
|
||||||
|
NS_NOTYETIMPLEMENTED("write me!");
|
||||||
|
return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsXULElement::RemoveAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName)
|
||||||
|
{
|
||||||
|
PRInt32 nameSpaceId;
|
||||||
|
nsCOMPtr<nsIAtom> tag = dont_AddRef(NS_NewAtom(aLocalName));
|
||||||
|
|
||||||
|
if (!aNamespaceURI.EqualsWithConversion("*")) {
|
||||||
|
gNameSpaceManager->GetNameSpaceID(aNamespaceURI, nameSpaceId);
|
||||||
|
|
||||||
|
if (nameSpaceId == kNameSpaceID_Unknown) {
|
||||||
|
// Unkonwn namespace means no attr...
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult rv = UnsetAttribute(nameSpaceId, tag, PR_TRUE);
|
||||||
|
NS_ASSERTION(NS_SUCCEEDED(rv), "unable to remove attribute");
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsXULElement::GetAttributeNodeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName,
|
||||||
|
nsIDOMAttr** aReturn)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aReturn);
|
||||||
|
|
||||||
|
nsresult rv;
|
||||||
|
|
||||||
|
nsCOMPtr<nsIDOMNamedNodeMap> map;
|
||||||
|
rv = GetAttributes(getter_AddRefs(map));
|
||||||
|
if (NS_FAILED(rv)) return rv;
|
||||||
|
|
||||||
|
nsCOMPtr<nsIDOMNode> node;
|
||||||
|
rv = map->GetNamedItemNS(aNamespaceURI, aLocalName, getter_AddRefs(node));
|
||||||
|
if (NS_FAILED(rv)) return rv;
|
||||||
|
|
||||||
|
if (node) {
|
||||||
|
rv = node->QueryInterface(NS_GET_IID(nsIDOMAttr), (void**) aReturn);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
*aReturn = nsnull;
|
||||||
|
rv = NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsXULElement::SetAttributeNodeNS(nsIDOMAttr* aNewAttr,
|
||||||
|
nsIDOMAttr** aReturn)
|
||||||
|
{
|
||||||
|
NS_NOTYETIMPLEMENTED("write me!");
|
||||||
|
return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsXULElement::GetElementsByTagNameNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName,
|
||||||
|
nsIDOMNodeList** aReturn)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aReturn);
|
||||||
|
|
||||||
|
PRInt32 nameSpaceId = kNameSpaceID_Unknown;
|
||||||
|
|
||||||
|
nsRDFDOMNodeList* elements;
|
||||||
|
nsresult rv = nsRDFDOMNodeList::Create(&elements);
|
||||||
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIDOMNodeList> kungFuGrip;
|
||||||
|
kungFuGrip = dont_AddRef(NS_STATIC_CAST(nsIDOMNodeList *, elements));
|
||||||
|
|
||||||
|
if (!aNamespaceURI.EqualsWithConversion("*")) {
|
||||||
|
gNameSpaceManager->GetNameSpaceID(aNamespaceURI, nameSpaceId);
|
||||||
|
|
||||||
|
if (nameSpaceId == kNameSpaceID_Unknown) {
|
||||||
|
// Unkonwn namespace means no matches, we return an empty list...
|
||||||
|
|
||||||
|
*aReturn = elements;
|
||||||
|
NS_ADDREF(*aReturn);
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rv = nsXULDocument::GetElementsByTagName(NS_STATIC_CAST(nsIStyledContent *,
|
||||||
|
this), aLocalName,
|
||||||
|
nameSpaceId, elements);
|
||||||
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
|
*aReturn = elements;
|
||||||
|
NS_ADDREF(*aReturn);
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsXULElement::HasAttribute(const nsString& aName, PRBool* aReturn)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aReturn);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIAtom> name;
|
||||||
|
PRInt32 nsid;
|
||||||
|
|
||||||
|
nsresult rv = ParseAttributeString(aName, *getter_AddRefs(name), nsid);
|
||||||
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
|
nsAutoString tmp;
|
||||||
|
rv = GetAttribute(nsid, name, tmp);
|
||||||
|
|
||||||
|
*aReturn = rv == NS_CONTENT_ATTR_NOT_THERE ? PR_FALSE : PR_TRUE;
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsXULElement::HasAttributeNS(const nsString& aNamespaceURI,
|
||||||
|
const nsString& aLocalName, PRBool* aReturn)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aReturn);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIAtom> name(dont_AddRef(NS_NewAtom(aLocalName)));
|
||||||
|
PRInt32 nsid;
|
||||||
|
|
||||||
|
gNameSpaceManager->GetNameSpaceID(aNamespaceURI, nsid);
|
||||||
|
|
||||||
|
if (nsid == kNameSpaceID_Unknown) {
|
||||||
|
// Unkonwn namespace means no attr...
|
||||||
|
|
||||||
|
*aReturn = PR_FALSE;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsAutoString tmp;
|
||||||
|
nsresult rv = GetAttribute(nsid, name, tmp);
|
||||||
|
|
||||||
|
*aReturn = rv == NS_CONTENT_ATTR_NOT_THERE ? PR_FALSE : PR_TRUE;
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsXULElement::GetElementsByAttribute(const nsString& aAttribute,
|
nsXULElement::GetElementsByAttribute(const nsString& aAttribute,
|
||||||
const nsString& aValue,
|
const nsString& aValue,
|
||||||
|
|
Загрузка…
Ссылка в новой задаче