Bug 659539 Part 1: Give nsINodeInfos a nodeType, nodeName and localName. r=bz

This commit is contained in:
Jonas Sicking 2011-06-14 00:56:49 -07:00
parent f653bfb946
commit e82dadd3d8
56 changed files with 377 additions and 190 deletions

View File

@ -546,6 +546,7 @@ public:
static nsresult GetNodeInfoFromQName(const nsAString& aNamespaceURI,
const nsAString& aQualifiedName,
nsNodeInfoManager* aNodeInfoManager,
PRUint16 aNodeType,
nsINodeInfo** aNodeInfo);
static void SplitExpatName(const PRUnichar *aExpatName, nsIAtom **aPrefix,
@ -689,7 +690,9 @@ public:
nsNodeInfoManager *niMgr = aNodeInfo->NodeInfoManager();
*aResult = niMgr->GetNodeInfo(aName, aNodeInfo->GetPrefixAtom(),
aNodeInfo->NamespaceID()).get();
aNodeInfo->NamespaceID(),
aNodeInfo->NodeType(),
aNodeInfo->GetExtraName()).get();
return *aResult ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
}

View File

@ -81,7 +81,7 @@ public:
NS_DECLARE_STATIC_IID_ACCESSOR(NS_INODEINFO_IID)
nsINodeInfo()
: mInner(nsnull, nsnull, kNameSpaceID_None),
: mInner(nsnull, nsnull, kNameSpaceID_None, 0, nsnull),
mOwnerManager(nsnull)
{
}
@ -159,30 +159,35 @@ public:
/*
* Get the namespace URI for a node, if the node has a namespace URI.
*
* For the HTML element "<body>" in a HTML document this will return a null
* string and for the XML element "<html:body>" (assuming that this element,
* or one of its ancestors has an
* xmlns:html='http://www.w3.org/1999/xhtml' attribute) this will return
* the string "http://www.w3.org/1999/xhtml".
*/
virtual nsresult GetNamespaceURI(nsAString& aNameSpaceURI) const = 0;
/*
* Get the namespace ID for a node if the node has a namespace, if not this
* returns kNameSpaceID_None.
*
* For the HTML element "<body>" in a HTML document this will return
* kNameSpaceID_None and for the XML element "<html:body>" (assuming that
* this element, or one of its ancestors has an
* xmlns:html='http://www.w3.org/1999/xhtml' attribute) this will return
* the namespace ID for "http://www.w3.org/1999/xhtml".
*/
PRInt32 NamespaceID() const
{
return mInner.mNamespaceID;
}
/*
* Get the nodetype for the node. Returns the values specified in nsIDOMNode
* for nsIDOMNode.nodeType
*/
PRUint16 NodeType() const
{
return mInner.mNodeType;
}
/*
* Get the extra name, used by PIs and DocTypes, for the node.
*/
nsIAtom* GetExtraName() const
{
return mInner.mExtraName;
}
/*
* Get and set the ID attribute atom for this node.
* See http://www.w3.org/TR/1998/REC-xml-19980210#sec-attribute-types
@ -322,24 +327,28 @@ protected:
public:
nsNodeInfoInner()
: mName(nsnull), mPrefix(nsnull), mNamespaceID(kNameSpaceID_Unknown),
mNameString(nsnull)
mNodeType(0), mNameString(nsnull), mExtraName(nsnull)
{
}
nsNodeInfoInner(nsIAtom *aName, nsIAtom *aPrefix, PRInt32 aNamespaceID)
nsNodeInfoInner(nsIAtom *aName, nsIAtom *aPrefix, PRInt32 aNamespaceID,
PRUint16 aNodeType, nsIAtom* aExtraName)
: mName(aName), mPrefix(aPrefix), mNamespaceID(aNamespaceID),
mNameString(nsnull)
mNodeType(aNodeType), mNameString(nsnull), mExtraName(aExtraName)
{
}
nsNodeInfoInner(const nsAString& aTmpName, nsIAtom *aPrefix, PRInt32 aNamespaceID)
nsNodeInfoInner(const nsAString& aTmpName, nsIAtom *aPrefix,
PRInt32 aNamespaceID, PRUint16 aNodeType)
: mName(nsnull), mPrefix(aPrefix), mNamespaceID(aNamespaceID),
mNameString(&aTmpName)
mNodeType(aNodeType), mNameString(&aTmpName), mExtraName(nsnull)
{
}
nsIAtom* mName;
nsIAtom* mPrefix;
PRInt32 mNamespaceID;
PRUint16 mNodeType; // As defined by nsIDOMNode.nodeType
const nsAString* mNameString;
nsIAtom* mExtraName; // Only used by PIs and DocTypes
};
// nsNodeInfoManager needs to pass mInner to the hash table.
@ -361,6 +370,13 @@ protected:
// Qualified name in "corrected case"; this will depend on our
// document and on mNamespaceID.
nsString mQualifiedNameCorrectedCase;
// nodeName for the node.
nsString mNodeName;
// localName for the node. This is either equal to mInner.mName, or a
// void string, depending on mInner.mNodeType.
nsString mLocalName;
};
NS_DEFINE_STATIC_IID_ACCESSOR(nsINodeInfo, NS_INODEINFO_IID)

View File

@ -106,6 +106,8 @@ NS_NewCommentNode(nsIContent** aInstancePtrResult,
nsCommentNode::nsCommentNode(already_AddRefed<nsINodeInfo> aNodeInfo)
: nsGenericDOMDataNode(aNodeInfo)
{
NS_ABORT_IF_FALSE(mNodeInfo->NodeType() == nsIDOMNode::COMMENT_NODE,
"Bad NodeType in aNodeInfo");
}
nsCommentNode::~nsCommentNode()

View File

@ -2088,6 +2088,7 @@ nsresult
nsContentUtils::GetNodeInfoFromQName(const nsAString& aNamespaceURI,
const nsAString& aQualifiedName,
nsNodeInfoManager* aNodeInfoManager,
PRUint16 aNodeType,
nsINodeInfo** aNodeInfo)
{
nsIParserService* parserService = GetParserService();
@ -2107,11 +2108,11 @@ nsContentUtils::GetNodeInfoFromQName(const nsAString& aNamespaceURI,
nsCOMPtr<nsIAtom> prefix = do_GetAtom(Substring(qName.get(), colon));
rv = aNodeInfoManager->GetNodeInfo(Substring(colon + 1, end), prefix,
nsID, aNodeInfo);
nsID, aNodeType, aNodeInfo);
}
else {
rv = aNodeInfoManager->GetNodeInfo(aQualifiedName, nsnull, nsID,
aNodeInfo);
aNodeType, aNodeInfo);
}
NS_ENSURE_SUCCESS(rv, rv);

View File

@ -72,7 +72,8 @@ nsDOMAttribute::nsDOMAttribute(nsDOMAttributeMap *aAttrMap,
: nsIAttribute(aAttrMap, aNodeInfo, aNsAware), mValue(aValue), mChild(nsnull)
{
NS_ABORT_IF_FALSE(mNodeInfo, "We must get a nodeinfo here!");
NS_ABORT_IF_FALSE(mNodeInfo->NodeType() == nsIDOMNode::ATTRIBUTE_NODE,
"Wrong nodeType");
// We don't add a reference to our content. It will tell us
// to drop our reference when it goes away.
@ -192,7 +193,8 @@ nsDOMAttribute::SetOwnerDocument(nsIDocument* aDocument)
nsCOMPtr<nsINodeInfo> newNodeInfo;
newNodeInfo = aDocument->NodeInfoManager()->
GetNodeInfo(mNodeInfo->NameAtom(), mNodeInfo->GetPrefixAtom(),
mNodeInfo->NamespaceID());
mNodeInfo->NamespaceID(),
nsIDOMNode::ATTRIBUTE_NODE);
NS_ENSURE_TRUE(newNodeInfo, NS_ERROR_OUT_OF_MEMORY);
NS_ASSERTION(newNodeInfo, "GetNodeInfo lies");
mNodeInfo.swap(newNodeInfo);

View File

@ -341,7 +341,8 @@ nsDOMAttributeMap::SetNamedItemInternal(nsIDOMNode *aNode,
}
rv = mContent->NodeInfo()->NodeInfoManager()->
GetNodeInfo(name, nsnull, kNameSpaceID_None, getter_AddRefs(ni));
GetNodeInfo(name, nsnull, kNameSpaceID_None,
nsIDOMNode::ATTRIBUTE_NODE, getter_AddRefs(ni));
NS_ENSURE_SUCCESS(rv, rv);
// value is already empty
}
@ -407,7 +408,8 @@ nsDOMAttributeMap::GetItemAt(PRUint32 aIndex, nsresult *aResult)
// have the wrong owner document.
nsCOMPtr<nsINodeInfo> ni;
ni = mContent->NodeInfo()->NodeInfoManager()->
GetNodeInfo(name->LocalName(), name->GetPrefix(), name->NamespaceID());
GetNodeInfo(name->LocalName(), name->GetPrefix(), name->NamespaceID(),
nsIDOMNode::ATTRIBUTE_NODE);
if (ni) {
node = GetAttribute(ni, PR_TRUE);
}
@ -484,7 +486,8 @@ nsDOMAttributeMap::GetNamedItemNSInternal(const nsAString& aNamespaceURI,
nameAtom->Equals(aLocalName)) {
nsCOMPtr<nsINodeInfo> ni;
ni = mContent->NodeInfo()->NodeInfoManager()->
GetNodeInfo(nameAtom, name->GetPrefix(), nameSpaceID);
GetNodeInfo(nameAtom, name->GetPrefix(), nameSpaceID,
nsIDOMNode::ATTRIBUTE_NODE);
NS_ENSURE_TRUE(ni, NS_ERROR_OUT_OF_MEMORY);
if (aRemove) {

View File

@ -78,12 +78,14 @@ NS_NewDOMDocumentType(nsIDOMDocumentType** aDocType,
nimgr->SetDocumentPrincipal(aPrincipal);
}
nsCOMPtr<nsINodeInfo> ni;
ni = nimgr->GetNodeInfo(nsGkAtoms::documentTypeNodeName, nsnull,
kNameSpaceID_None);
nsCOMPtr<nsINodeInfo> ni =
nimgr->GetNodeInfo(nsGkAtoms::documentTypeNodeName, nsnull,
kNameSpaceID_None,
nsIDOMNode::DOCUMENT_TYPE_NODE,
aName);
NS_ENSURE_TRUE(ni, NS_ERROR_OUT_OF_MEMORY);
*aDocType = new nsDOMDocumentType(ni.forget(), aName, aPublicId, aSystemId,
*aDocType = new nsDOMDocumentType(ni.forget(), aPublicId, aSystemId,
aInternalSubset);
NS_ADDREF(*aDocType);
@ -91,16 +93,16 @@ NS_NewDOMDocumentType(nsIDOMDocumentType** aDocType,
}
nsDOMDocumentType::nsDOMDocumentType(already_AddRefed<nsINodeInfo> aNodeInfo,
nsIAtom *aName,
const nsAString& aPublicId,
const nsAString& aSystemId,
const nsAString& aInternalSubset) :
nsDOMDocumentTypeForward(aNodeInfo),
mName(aName),
mPublicId(aPublicId),
mSystemId(aSystemId),
mInternalSubset(aInternalSubset)
{
NS_ABORT_IF_FALSE(mNodeInfo->NodeType() == nsIDOMNode::DOCUMENT_TYPE_NODE,
"Bad NodeType in aNodeInfo");
}
nsDOMDocumentType::~nsDOMDocumentType()
@ -133,7 +135,7 @@ nsDOMDocumentType::IsNodeOfType(PRUint32 aFlags) const
void
nsDOMDocumentType::NodeName(nsAString& aNodeName)
{
mName->ToString(aNodeName);
mNodeInfo->GetExtraName()->ToString(aNodeName);
}
PRUint16
@ -151,7 +153,7 @@ nsDOMDocumentType::GetText()
NS_IMETHODIMP
nsDOMDocumentType::GetName(nsAString& aName)
{
mName->ToString(aName);
mNodeInfo->GetExtraName()->ToString(aName);
return NS_OK;
}
@ -182,7 +184,7 @@ nsGenericDOMDataNode*
nsDOMDocumentType::CloneDataNode(nsINodeInfo *aNodeInfo, PRBool aCloneText) const
{
nsCOMPtr<nsINodeInfo> ni = aNodeInfo;
return new nsDOMDocumentType(ni.forget(), mName, mPublicId, mSystemId,
return new nsDOMDocumentType(ni.forget(), mPublicId, mSystemId,
mInternalSubset);
}
@ -208,7 +210,9 @@ nsDOMDocumentType::BindToTree(nsIDocument *aDocument, nsIContent *aParent,
nsCOMPtr<nsINodeInfo> newNodeInfo;
newNodeInfo = nimgr->GetNodeInfo(mNodeInfo->NameAtom(),
mNodeInfo->GetPrefixAtom(),
mNodeInfo->NamespaceID());
mNodeInfo->NamespaceID(),
nsIDOMNode::DOCUMENT_TYPE_NODE,
mNodeInfo->GetExtraName());
NS_ENSURE_TRUE(newNodeInfo, NS_ERROR_OUT_OF_MEMORY);
mNodeInfo.swap(newNodeInfo);

View File

@ -70,7 +70,6 @@ class nsDOMDocumentType : public nsDOMDocumentTypeForward
{
public:
nsDOMDocumentType(already_AddRefed<nsINodeInfo> aNodeInfo,
nsIAtom *aName,
const nsAString& aPublicId,
const nsAString& aSystemId,
const nsAString& aInternalSubset);
@ -113,7 +112,6 @@ public:
virtual nsXPCClassInfo* GetClassInfo();
protected:
nsCOMPtr<nsIAtom> mName;
nsString mPublicId;
nsString mSystemId;
nsString mInternalSubset;

View File

@ -1997,6 +1997,8 @@ nsDocument::Init()
mNodeInfo = mNodeInfoManager->GetDocumentNodeInfo();
NS_ENSURE_TRUE(mNodeInfo, NS_ERROR_OUT_OF_MEMORY);
NS_ABORT_IF_FALSE(mNodeInfo->NodeType() == nsIDOMNode::DOCUMENT_NODE,
"Bad NodeType in aNodeInfo");
NS_ASSERTION(GetOwnerDoc() == this, "Our nodeinfo is busted!");
@ -4384,6 +4386,7 @@ nsDocument::CreateElementNS(const nsAString& aNamespaceURI,
nsresult rv = nsContentUtils::GetNodeInfoFromQName(aNamespaceURI,
aQualifiedName,
mNodeInfoManager,
nsIDOMNode::ELEMENT_NODE,
getter_AddRefs(nodeInfo));
NS_ENSURE_SUCCESS(rv, rv);
@ -4516,6 +4519,7 @@ nsDocument::CreateAttribute(const nsAString& aName,
nsCOMPtr<nsINodeInfo> nodeInfo;
rv = mNodeInfoManager->GetNodeInfo(aName, nsnull, kNameSpaceID_None,
nsIDOMNode::ATTRIBUTE_NODE,
getter_AddRefs(nodeInfo));
NS_ENSURE_SUCCESS(rv, rv);
@ -4537,6 +4541,7 @@ nsDocument::CreateAttributeNS(const nsAString & aNamespaceURI,
nsresult rv = nsContentUtils::GetNodeInfoFromQName(aNamespaceURI,
aQualifiedName,
mNodeInfoManager,
nsIDOMNode::ATTRIBUTE_NODE,
getter_AddRefs(nodeInfo));
NS_ENSURE_SUCCESS(rv, rv);
@ -5199,7 +5204,8 @@ nsDocument::SetTitle(const nsAString& aTitle)
{
nsCOMPtr<nsINodeInfo> titleInfo;
titleInfo = mNodeInfoManager->GetNodeInfo(nsGkAtoms::title, nsnull,
kNameSpaceID_XHTML);
kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
if (!titleInfo)
return NS_OK;
title = NS_NewHTMLTitleElement(titleInfo.forget());
@ -6929,6 +6935,7 @@ nsDocument::CreateElem(const nsAString& aName, nsIAtom *aPrefix, PRInt32 aNamesp
nsCOMPtr<nsINodeInfo> nodeInfo;
mNodeInfoManager->GetNodeInfo(aName, aPrefix, aNamespaceID,
nsIDOMNode::ELEMENT_NODE,
getter_AddRefs(nodeInfo));
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);

View File

@ -142,7 +142,8 @@ NS_NewDocumentFragment(nsIDOMDocumentFragment** aInstancePtrResult,
nsCOMPtr<nsINodeInfo> nodeInfo;
nodeInfo = aNodeInfoManager->GetNodeInfo(nsGkAtoms::documentFragmentNodeName,
nsnull, kNameSpaceID_None);
nsnull, kNameSpaceID_None,
nsIDOMNode::DOCUMENT_FRAGMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
nsDocumentFragment *it = new nsDocumentFragment(nodeInfo.forget());

View File

@ -72,6 +72,13 @@ namespace css = mozilla::css;
nsGenericDOMDataNode::nsGenericDOMDataNode(already_AddRefed<nsINodeInfo> aNodeInfo)
: nsIContent(aNodeInfo)
{
NS_ABORT_IF_FALSE(mNodeInfo->NodeType() == nsIDOMNode::TEXT_NODE ||
mNodeInfo->NodeType() == nsIDOMNode::CDATA_SECTION_NODE ||
mNodeInfo->NodeType() == nsIDOMNode::COMMENT_NODE ||
mNodeInfo->NodeType() ==
nsIDOMNode::PROCESSING_INSTRUCTION_NODE ||
mNodeInfo->NodeType() == nsIDOMNode::DOCUMENT_TYPE_NODE,
"Bad NodeType in aNodeInfo");
}
nsGenericDOMDataNode::~nsGenericDOMDataNode()

View File

@ -2223,6 +2223,13 @@ nsGenericElement::nsDOMSlots::~nsDOMSlots()
nsGenericElement::nsGenericElement(already_AddRefed<nsINodeInfo> aNodeInfo)
: Element(aNodeInfo)
{
NS_ABORT_IF_FALSE(mNodeInfo->NodeType() == nsIDOMNode::ELEMENT_NODE ||
(mNodeInfo->NodeType() ==
nsIDOMNode::DOCUMENT_FRAGMENT_NODE &&
mNodeInfo->Equals(nsGkAtoms::documentFragmentNodeName,
kNameSpaceID_None)),
"Bad NodeType in aNodeInfo");
// Set the default scriptID to JS - but skip SetScriptTypeID as it
// does extra work we know isn't necessary here...
SetFlags((nsIProgrammingLanguage::JAVASCRIPT << NODE_SCRIPT_TYPE_OFFSET));
@ -2579,6 +2586,7 @@ nsGenericElement::SetAttributeNS(const nsAString& aNamespaceURI,
nsresult rv =
nsContentUtils::GetNodeInfoFromQName(aNamespaceURI, aQualifiedName,
mNodeInfo->NodeInfoManager(),
nsIDOMNode::ATTRIBUTE_NODE,
getter_AddRefs(ni));
NS_ENSURE_SUCCESS(rv, rv);
@ -3455,8 +3463,9 @@ nsGenericElement::GetExistingAttrNameFromQName(const nsAString& aStr) const
nsINodeInfo* nodeInfo;
if (name->IsAtom()) {
nodeInfo = mNodeInfo->NodeInfoManager()->GetNodeInfo(name->Atom(), nsnull,
kNameSpaceID_None).get();
nodeInfo = mNodeInfo->NodeInfoManager()->
GetNodeInfo(name->Atom(), nsnull, kNameSpaceID_None,
nsIDOMNode::ATTRIBUTE_NODE).get();
}
else {
NS_ADDREF(nodeInfo = name->NodeInfo());
@ -4695,7 +4704,8 @@ nsGenericElement::SetAttrAndNotify(PRInt32 aNamespaceID,
else {
nsCOMPtr<nsINodeInfo> ni;
ni = mNodeInfo->NodeInfoManager()->GetNodeInfo(aName, aPrefix,
aNamespaceID);
aNamespaceID,
nsIDOMNode::ATTRIBUTE_NODE);
NS_ENSURE_TRUE(ni, NS_ERROR_OUT_OF_MEMORY);
rv = mAttrsAndChildren.SetAndTakeAttr(ni, aParsedValue);

View File

@ -1089,6 +1089,7 @@ GK_ATOM(headerCSP, "x-content-security-policy")
GK_ATOM(headerCSPReportOnly, "x-content-security-policy-report-only")
GK_ATOM(headerXFO, "x-frame-options")
GK_ATOM(xml, "xml")
GK_ATOM(xml_stylesheet, "xml-stylesheet")
GK_ATOM(xmlns, "xmlns")
GK_ATOM(xmp, "xmp")
GK_ATOM(xulcontentsgenerated, "xulcontentsgenerated")

View File

@ -69,6 +69,7 @@ nsFixedSizeAllocator* nsNodeInfo::sNodeInfoPool = nsnull;
// static
nsNodeInfo*
nsNodeInfo::Create(nsIAtom *aName, nsIAtom *aPrefix, PRInt32 aNamespaceID,
PRUint16 aNodeType, nsIAtom *aExtraName,
nsNodeInfoManager *aOwnerManager)
{
if (!sNodeInfoPool) {
@ -88,7 +89,8 @@ nsNodeInfo::Create(nsIAtom *aName, nsIAtom *aPrefix, PRInt32 aNamespaceID,
// Create a new one
void* place = sNodeInfoPool->Alloc(sizeof(nsNodeInfo));
return place ?
new (place) nsNodeInfo(aName, aPrefix, aNamespaceID, aOwnerManager) :
new (place) nsNodeInfo(aName, aPrefix, aNamespaceID, aNodeType, aExtraName,
aOwnerManager) :
nsnull;
}
@ -99,34 +101,33 @@ nsNodeInfo::~nsNodeInfo()
NS_RELEASE(mInner.mName);
NS_IF_RELEASE(mInner.mPrefix);
NS_IF_RELEASE(mInner.mExtraName);
}
nsNodeInfo::nsNodeInfo(nsIAtom *aName, nsIAtom *aPrefix, PRInt32 aNamespaceID,
PRUint16 aNodeType, nsIAtom* aExtraName,
nsNodeInfoManager *aOwnerManager)
{
NS_ABORT_IF_FALSE(aName, "Must have a name");
NS_ABORT_IF_FALSE(aOwnerManager, "Must have an owner manager");
mInner.mName = aName;
NS_ADDREF(mInner.mName);
mInner.mPrefix = aPrefix;
NS_IF_ADDREF(mInner.mPrefix);
CHECK_VALID_NODEINFO(aNodeType, aName, aNamespaceID, aExtraName);
NS_ABORT_IF_FALSE(aOwnerManager, "Invalid aOwnerManager");
// Initialize mInner
NS_ADDREF(mInner.mName = aName);
NS_IF_ADDREF(mInner.mPrefix = aPrefix);
mInner.mNamespaceID = aNamespaceID;
mOwnerManager = aOwnerManager;
NS_ADDREF(mOwnerManager);
mInner.mNodeType = aNodeType;
NS_ADDREF(mOwnerManager = aOwnerManager);
NS_IF_ADDREF(mInner.mExtraName = aExtraName);
// Now compute our cached members.
// Qualified name. If we have no prefix, use ToString on
// mInner.mName so that we get to share its buffer.
if (aPrefix) {
aPrefix->ToString(mQualifiedName);
mQualifiedName.Append(PRUnichar(':'));
mQualifiedName.Append(nsDependentAtomString(mInner.mName));
mQualifiedName = nsDependentAtomString(mInner.mPrefix) +
NS_LITERAL_STRING(":") +
nsDependentAtomString(mInner.mName);
} else {
mInner.mName->ToString(mQualifiedName);
}
@ -138,6 +139,30 @@ nsNodeInfo::nsNodeInfo(nsIAtom *aName, nsIAtom *aPrefix, PRInt32 aNamespaceID,
} else {
mQualifiedNameCorrectedCase = mQualifiedName;
}
switch (aNodeType) {
case nsIDOMNode::ELEMENT_NODE:
case nsIDOMNode::ATTRIBUTE_NODE:
mNodeName = mQualifiedNameCorrectedCase;
mInner.mName->ToString(mLocalName);
break;
case nsIDOMNode::TEXT_NODE:
case nsIDOMNode::CDATA_SECTION_NODE:
case nsIDOMNode::COMMENT_NODE:
case nsIDOMNode::DOCUMENT_NODE:
case nsIDOMNode::DOCUMENT_FRAGMENT_NODE:
mInner.mName->ToString(mNodeName);
SetDOMStringToNull(mLocalName);
break;
case nsIDOMNode::PROCESSING_INSTRUCTION_NODE:
case nsIDOMNode::DOCUMENT_TYPE_NODE:
mInner.mExtraName->ToString(mNodeName);
SetDOMStringToNull(mLocalName);
break;
default:
NS_ABORT_IF_FALSE(aNodeType == PR_UINT16_MAX,
"Unknown node type");
}
}

View File

@ -69,12 +69,14 @@ public:
* aName and aOwnerManager may not be null.
*/
static nsNodeInfo *Create(nsIAtom *aName, nsIAtom *aPrefix,
PRInt32 aNamespaceID,
PRInt32 aNamespaceID, PRUint16 aNodeType,
nsIAtom *aExtraName,
nsNodeInfoManager *aOwnerManager);
private:
nsNodeInfo(); // Unimplemented
nsNodeInfo(const nsNodeInfo& aOther); // Unimplemented
nsNodeInfo(nsIAtom *aName, nsIAtom *aPrefix, PRInt32 aNamespaceID,
PRUint16 aNodeType, nsIAtom *aExtraName,
nsNodeInfoManager *aOwnerManager);
protected:
virtual ~nsNodeInfo();
@ -96,4 +98,42 @@ private:
void LastRelease();
};
#define CHECK_VALID_NODEINFO(_nodeType, _name, _namespaceID, _extraName) \
NS_ABORT_IF_FALSE(_nodeType == nsIDOMNode::ELEMENT_NODE || \
_nodeType == nsIDOMNode::ATTRIBUTE_NODE || \
_nodeType == nsIDOMNode::TEXT_NODE || \
_nodeType == nsIDOMNode::CDATA_SECTION_NODE || \
_nodeType == nsIDOMNode::PROCESSING_INSTRUCTION_NODE || \
_nodeType == nsIDOMNode::COMMENT_NODE || \
_nodeType == nsIDOMNode::DOCUMENT_NODE || \
_nodeType == nsIDOMNode::DOCUMENT_TYPE_NODE || \
_nodeType == nsIDOMNode::DOCUMENT_FRAGMENT_NODE || \
_nodeType == PR_UINT16_MAX, \
"Invalid nodeType"); \
NS_ABORT_IF_FALSE((_nodeType == nsIDOMNode::PROCESSING_INSTRUCTION_NODE || \
_nodeType == nsIDOMNode::DOCUMENT_TYPE_NODE) == \
(_extraName != nsnull), \
"Supply aExtraName for and only for PIs and doctypes"); \
NS_ABORT_IF_FALSE(_nodeType == nsIDOMNode::ELEMENT_NODE || \
_nodeType == nsIDOMNode::ATTRIBUTE_NODE || \
_nodeType == PR_UINT16_MAX || \
aNamespaceID == kNameSpaceID_None, \
"Only attributes and elements can be in a namespace"); \
NS_ABORT_IF_FALSE(_name && _name != nsGkAtoms::_empty, "Invalid localName");\
NS_ABORT_IF_FALSE(((_nodeType == nsIDOMNode::TEXT_NODE) == \
(_name == nsGkAtoms::textTagName)) && \
((_nodeType == nsIDOMNode::CDATA_SECTION_NODE) == \
(_name == nsGkAtoms::cdataTagName)) && \
((_nodeType == nsIDOMNode::COMMENT_NODE) == \
(_name == nsGkAtoms::commentTagName)) && \
((_nodeType == nsIDOMNode::DOCUMENT_NODE) == \
(_name == nsGkAtoms::documentNodeName)) && \
((_nodeType == nsIDOMNode::DOCUMENT_FRAGMENT_NODE) == \
(_name == nsGkAtoms::documentFragmentNodeName)) && \
((_nodeType == nsIDOMNode::DOCUMENT_TYPE_NODE) == \
(_name == nsGkAtoms::documentTypeNodeName)) && \
((_nodeType == nsIDOMNode::PROCESSING_INSTRUCTION_NODE) ==\
(_name == nsGkAtoms::processingInstructionTagName)), \
"Wrong localName for nodeType");
#endif /* nsNodeInfo_h___ */

View File

@ -91,7 +91,9 @@ nsNodeInfoManager::NodeInfoInnerKeyCompare(const void *key1, const void *key2)
reinterpret_cast<const nsINodeInfo::nsNodeInfoInner *>(key2);
if (node1->mPrefix != node2->mPrefix ||
node1->mNamespaceID != node2->mNamespaceID) {
node1->mNamespaceID != node2->mNamespaceID ||
node1->mNodeType != node2->mNodeType ||
node1->mExtraName != node2->mExtraName) {
return 0;
}
@ -205,13 +207,13 @@ nsNodeInfoManager::DropDocumentReference()
already_AddRefed<nsINodeInfo>
nsNodeInfoManager::GetNodeInfo(nsIAtom *aName, nsIAtom *aPrefix,
PRInt32 aNamespaceID)
PRInt32 aNamespaceID, PRUint16 aNodeType,
nsIAtom* aExtraName /* = nsnull */)
{
NS_ENSURE_TRUE(aName, nsnull);
NS_ASSERTION(!aName->Equals(EmptyString()),
"Don't pass an empty string to GetNodeInfo, fix caller.");
CHECK_VALID_NODEINFO(aNodeType, aName, aNamespaceID, aExtraName);
nsINodeInfo::nsNodeInfoInner tmpKey(aName, aPrefix, aNamespaceID);
nsINodeInfo::nsNodeInfoInner tmpKey(aName, aPrefix, aNamespaceID, aNodeType,
aExtraName);
void *node = PL_HashTableLookup(mNodeInfoHash, &tmpKey);
@ -224,7 +226,8 @@ nsNodeInfoManager::GetNodeInfo(nsIAtom *aName, nsIAtom *aPrefix,
}
nsRefPtr<nsNodeInfo> newNodeInfo =
nsNodeInfo::Create(aName, aPrefix, aNamespaceID, this);
nsNodeInfo::Create(aName, aPrefix, aNamespaceID, aNodeType, aExtraName,
this);
NS_ENSURE_TRUE(newNodeInfo, nsnull);
PLHashEntry *he;
@ -242,12 +245,17 @@ nsNodeInfoManager::GetNodeInfo(nsIAtom *aName, nsIAtom *aPrefix,
nsresult
nsNodeInfoManager::GetNodeInfo(const nsAString& aName, nsIAtom *aPrefix,
PRInt32 aNamespaceID, nsINodeInfo** aNodeInfo)
PRInt32 aNamespaceID, PRUint16 aNodeType,
nsINodeInfo** aNodeInfo)
{
NS_ASSERTION(!aName.IsEmpty(),
"Don't pass an empty string to GetNodeInfo, fix caller.");
#ifdef DEBUG
{
nsCOMPtr<nsIAtom> nameAtom = do_GetAtom(aName);
CHECK_VALID_NODEINFO(aNodeType, nameAtom, aNamespaceID, nsnull);
}
#endif
nsINodeInfo::nsNodeInfoInner tmpKey(aName, aPrefix, aNamespaceID);
nsINodeInfo::nsNodeInfoInner tmpKey(aName, aPrefix, aNamespaceID, aNodeType);
void *node = PL_HashTableLookup(mNodeInfoHash, &tmpKey);
@ -264,7 +272,8 @@ nsNodeInfoManager::GetNodeInfo(const nsAString& aName, nsIAtom *aPrefix,
NS_ENSURE_TRUE(nameAtom, NS_ERROR_OUT_OF_MEMORY);
nsRefPtr<nsNodeInfo> newNodeInfo =
nsNodeInfo::Create(nameAtom, aPrefix, aNamespaceID, this);
nsNodeInfo::Create(nameAtom, aPrefix, aNamespaceID, aNodeType, nsnull,
this);
NS_ENSURE_TRUE(newNodeInfo, NS_ERROR_OUT_OF_MEMORY);
PLHashEntry *he;
@ -280,11 +289,9 @@ nsNodeInfoManager::GetNodeInfo(const nsAString& aName, nsIAtom *aPrefix,
nsresult
nsNodeInfoManager::GetNodeInfo(const nsAString& aName, nsIAtom *aPrefix,
const nsAString& aNamespaceURI,
PRUint16 aNodeType,
nsINodeInfo** aNodeInfo)
{
nsCOMPtr<nsIAtom> nameAtom = do_GetAtom(aName);
NS_ENSURE_TRUE(nameAtom, NS_ERROR_OUT_OF_MEMORY);
PRInt32 nsid = kNameSpaceID_None;
if (!aNamespaceURI.IsEmpty()) {
@ -293,15 +300,16 @@ nsNodeInfoManager::GetNodeInfo(const nsAString& aName, nsIAtom *aPrefix,
NS_ENSURE_SUCCESS(rv, rv);
}
*aNodeInfo = GetNodeInfo(nameAtom, aPrefix, nsid).get();
return *aNodeInfo ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
return GetNodeInfo(aName, aPrefix, nsid, aNodeType, aNodeInfo);
}
already_AddRefed<nsINodeInfo>
nsNodeInfoManager::GetTextNodeInfo()
{
if (!mTextNodeInfo) {
mTextNodeInfo = GetNodeInfo(nsGkAtoms::textTagName, nsnull, kNameSpaceID_None).get();
mTextNodeInfo = GetNodeInfo(nsGkAtoms::textTagName, nsnull,
kNameSpaceID_None,
nsIDOMNode::TEXT_NODE, nsnull).get();
}
else {
NS_ADDREF(mTextNodeInfo);
@ -314,7 +322,9 @@ already_AddRefed<nsINodeInfo>
nsNodeInfoManager::GetCommentNodeInfo()
{
if (!mCommentNodeInfo) {
mCommentNodeInfo = GetNodeInfo(nsGkAtoms::commentTagName, nsnull, kNameSpaceID_None).get();
mCommentNodeInfo = GetNodeInfo(nsGkAtoms::commentTagName, nsnull,
kNameSpaceID_None,
nsIDOMNode::COMMENT_NODE, nsnull).get();
}
else {
NS_ADDREF(mCommentNodeInfo);
@ -327,7 +337,9 @@ already_AddRefed<nsINodeInfo>
nsNodeInfoManager::GetDocumentNodeInfo()
{
if (!mDocumentNodeInfo) {
mDocumentNodeInfo = GetNodeInfo(nsGkAtoms::documentNodeName, nsnull, kNameSpaceID_None).get();
mDocumentNodeInfo = GetNodeInfo(nsGkAtoms::documentNodeName, nsnull,
kNameSpaceID_None,
nsIDOMNode::DOCUMENT_NODE, nsnull).get();
}
else {
NS_ADDREF(mDocumentNodeInfo);

View File

@ -85,11 +85,14 @@ public:
* Methods for creating nodeinfo's from atoms and/or strings.
*/
already_AddRefed<nsINodeInfo> GetNodeInfo(nsIAtom *aName, nsIAtom *aPrefix,
PRInt32 aNamespaceID);
PRInt32 aNamespaceID,
PRUint16 aNodeType,
nsIAtom* aExtraName = nsnull);
nsresult GetNodeInfo(const nsAString& aName, nsIAtom *aPrefix,
PRInt32 aNamespaceID, nsINodeInfo** aNodeInfo);
PRInt32 aNamespaceID, PRUint16 aNodeType,
nsINodeInfo** aNodeInfo);
nsresult GetNodeInfo(const nsAString& aName, nsIAtom *aPrefix,
const nsAString& aNamespaceURI,
const nsAString& aNamespaceURI, PRUint16 aNodeType,
nsINodeInfo** aNodeInfo);
/**

View File

@ -502,7 +502,9 @@ nsNodeUtils::CloneAndAdopt(nsINode *aNode, PRBool aClone, PRBool aDeep,
newNodeInfo = nodeInfoManager->GetNodeInfo(nodeInfo->NameAtom(),
nodeInfo->GetPrefixAtom(),
nodeInfo->NamespaceID());
nodeInfo->NamespaceID(),
nodeInfo->NodeType(),
nodeInfo->GetExtraName());
NS_ENSURE_TRUE(newNodeInfo, NS_ERROR_OUT_OF_MEMORY);
nodeInfo = newNodeInfo;

View File

@ -143,6 +143,8 @@ NS_NewTextNode(nsIContent** aInstancePtrResult,
nsTextNode::nsTextNode(already_AddRefed<nsINodeInfo> aNodeInfo)
: nsGenericDOMDataNode(aNodeInfo)
{
NS_ABORT_IF_FALSE(mNodeInfo->NodeType() == nsIDOMNode::TEXT_NODE,
"Bad NodeType in aNodeInfo");
}
nsTextNode::~nsTextNode()

View File

@ -84,7 +84,8 @@ NS_NewHTMLAudioElement(already_AddRefed<nsINodeInfo> aNodeInfo,
NS_ENSURE_TRUE(doc, nsnull);
nodeInfo = doc->NodeInfoManager()->GetNodeInfo(nsGkAtoms::audio, nsnull,
kNameSpaceID_XHTML);
kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, nsnull);
}

View File

@ -170,7 +170,8 @@ NS_NewHTMLImageElement(already_AddRefed<nsINodeInfo> aNodeInfo,
NS_ENSURE_TRUE(doc, nsnull);
nodeInfo = doc->NodeInfoManager()->GetNodeInfo(nsGkAtoms::img, nsnull,
kNameSpaceID_XHTML);
kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, nsnull);
}

View File

@ -107,7 +107,8 @@ NS_NewHTMLOptionElement(already_AddRefed<nsINodeInfo> aNodeInfo,
NS_ENSURE_TRUE(doc, nsnull);
nodeInfo = doc->NodeInfoManager()->GetNodeInfo(nsGkAtoms::option, nsnull,
kNameSpaceID_XHTML);
kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, nsnull);
}

View File

@ -1562,7 +1562,8 @@ nsTextEditorState::CreateRootNode()
// Now create a DIV and add it to the anonymous content child list.
nsCOMPtr<nsINodeInfo> nodeInfo;
nodeInfo = doc->NodeInfoManager()->GetNodeInfo(nsGkAtoms::div, nsnull,
kNameSpaceID_XHTML);
kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
nsresult rv = NS_NewHTMLElement(getter_AddRefs(mRootNode), nodeInfo.forget(),
@ -1639,7 +1640,8 @@ be called if @placeholder is the empty string when trimmed from line breaks");
// and add it to the anonymous content child list
nsCOMPtr<nsINodeInfo> nodeInfo;
nodeInfo = pNodeInfoManager->GetNodeInfo(nsGkAtoms::div, nsnull,
kNameSpaceID_XHTML);
kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
rv = NS_NewHTMLElement(getter_AddRefs(mPlaceholderDiv), nodeInfo.forget(),

View File

@ -651,7 +651,8 @@ ImageDocument::CreateSyntheticDocument()
nsCOMPtr<nsINodeInfo> nodeInfo;
nodeInfo = mNodeInfoManager->GetNodeInfo(nsGkAtoms::img, nsnull,
kNameSpaceID_XHTML);
kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
mImageContent = NS_NewHTMLImageElement(nodeInfo.forget());

View File

@ -237,7 +237,8 @@ MediaDocument::CreateSyntheticDocument()
nsCOMPtr<nsINodeInfo> nodeInfo;
nodeInfo = mNodeInfoManager->GetNodeInfo(nsGkAtoms::html, nsnull,
kNameSpaceID_XHTML);
kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
nsRefPtr<nsGenericHTMLElement> root = NS_NewHTMLHtmlElement(nodeInfo.forget());
@ -250,7 +251,8 @@ MediaDocument::CreateSyntheticDocument()
NS_ENSURE_SUCCESS(rv, rv);
nodeInfo = mNodeInfoManager->GetNodeInfo(nsGkAtoms::head, nsnull,
kNameSpaceID_XHTML);
kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
// Create a <head> so our title has somewhere to live
@ -262,7 +264,8 @@ MediaDocument::CreateSyntheticDocument()
root->AppendChildTo(head, PR_FALSE);
nodeInfo = mNodeInfoManager->GetNodeInfo(nsGkAtoms::body, nsnull,
kNameSpaceID_XHTML);
kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
nsRefPtr<nsGenericHTMLElement> body = NS_NewHTMLBodyElement(nodeInfo.forget());

View File

@ -298,7 +298,8 @@ PluginDocument::CreateSyntheticPluginDocument()
// make plugin content
nsCOMPtr<nsINodeInfo> nodeInfo;
nodeInfo = mNodeInfoManager->GetNodeInfo(nsGkAtoms::embed, nsnull,
kNameSpaceID_XHTML);
kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
rv = NS_NewHTMLElement(getter_AddRefs(mPluginContent), nodeInfo.forget(),
NOT_FROM_PARSER);

View File

@ -112,7 +112,8 @@ VideoDocument::CreateSyntheticVideoDocument(nsIChannel* aChannel,
// make content
nsCOMPtr<nsINodeInfo> nodeInfo;
nodeInfo = mNodeInfoManager->GetNodeInfo(nsGkAtoms::video, nsnull,
kNameSpaceID_XHTML);
kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_FAILURE);
nsRefPtr<nsHTMLMediaElement> element =

View File

@ -534,7 +534,8 @@ HTMLContentSink::CreateContentObject(const nsIParserNode& aNode,
nsAutoString lower;
nsContentUtils::ASCIIToLower(aNode.GetText(), lower);
nsCOMPtr<nsIAtom> name = do_GetAtom(lower);
nodeInfo = mNodeInfoManager->GetNodeInfo(name, nsnull, kNameSpaceID_XHTML);
nodeInfo = mNodeInfoManager->GetNodeInfo(name, nsnull, kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
}
else if (mNodeInfoCache[aNodeType]) {
nodeInfo = mNodeInfoCache[aNodeType];
@ -547,7 +548,8 @@ HTMLContentSink::CreateContentObject(const nsIParserNode& aNode,
nsIAtom *name = parserService->HTMLIdToAtomTag(aNodeType);
NS_ASSERTION(name, "What? Reverse mapping of id to string broken!!!");
nodeInfo = mNodeInfoManager->GetNodeInfo(name, nsnull, kNameSpaceID_XHTML);
nodeInfo = mNodeInfoManager->GetNodeInfo(name, nsnull, kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_IF_ADDREF(mNodeInfoCache[aNodeType] = nodeInfo);
}
@ -1602,7 +1604,8 @@ HTMLContentSink::Init(nsIDocument* aDoc,
nsCOMPtr<nsINodeInfo> nodeInfo;
nodeInfo = mNodeInfoManager->GetNodeInfo(nsGkAtoms::html, nsnull,
kNameSpaceID_XHTML);
kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
// Make root part
@ -1618,7 +1621,8 @@ HTMLContentSink::Init(nsIDocument* aDoc,
// Make head part
nodeInfo = mNodeInfoManager->GetNodeInfo(nsGkAtoms::head,
nsnull, kNameSpaceID_XHTML);
nsnull, kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
mHead = NS_NewHTMLHeadElement(nodeInfo.forget());
@ -2595,7 +2599,9 @@ HTMLContentSink::ProcessLINKTag(const nsIParserNode& aNode)
// Create content object
nsCOMPtr<nsIContent> element;
nsCOMPtr<nsINodeInfo> nodeInfo;
nodeInfo = mNodeInfoManager->GetNodeInfo(nsGkAtoms::link, nsnull, kNameSpaceID_XHTML);
nodeInfo = mNodeInfoManager->GetNodeInfo(nsGkAtoms::link, nsnull,
kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
result = NS_NewHTMLElement(getter_AddRefs(element), nodeInfo.forget(),
NOT_FROM_PARSER);

View File

@ -367,7 +367,8 @@ nsHTMLFragmentContentSink::OpenContainer(const nsIParserNode& aNode)
nsCOMPtr<nsIAtom> name = do_GetAtom(lower);
nodeInfo = mNodeInfoManager->GetNodeInfo(name,
nsnull,
kNameSpaceID_XHTML);
kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
}
else if (mNodeInfoCache[nodeType]) {
@ -383,7 +384,8 @@ nsHTMLFragmentContentSink::OpenContainer(const nsIParserNode& aNode)
nodeInfo = mNodeInfoManager->GetNodeInfo(name,
nsnull,
kNameSpaceID_XHTML);
kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
NS_ADDREF(mNodeInfoCache[nodeType] = nodeInfo);
@ -461,7 +463,8 @@ nsHTMLFragmentContentSink::AddLeaf(const nsIParserNode& aNode)
nsContentUtils::ASCIIToLower(aNode.GetText(), lower);
nsCOMPtr<nsIAtom> name = do_GetAtom(lower);
nodeInfo = mNodeInfoManager->GetNodeInfo(name, nsnull,
kNameSpaceID_XHTML);
kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
}
else if (mNodeInfoCache[nodeType]) {
@ -472,7 +475,8 @@ nsHTMLFragmentContentSink::AddLeaf(const nsIParserNode& aNode)
NS_ASSERTION(name, "This should not happen!");
nodeInfo = mNodeInfoManager->GetNodeInfo(name, nsnull,
kNameSpaceID_XHTML);
kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
NS_ADDREF(mNodeInfoCache[nodeType] = nodeInfo);
}
@ -944,13 +948,7 @@ nsHTMLParanoidFragmentSink::NameFromNode(const nsIParserNode& aNode,
*aResult = nsnull;
if (type == eHTMLTag_userdefined) {
nsCOMPtr<nsINodeInfo> nodeInfo;
rv =
mNodeInfoManager->GetNodeInfo(aNode.GetText(), nsnull,
kNameSpaceID_XHTML,
getter_AddRefs(nodeInfo));
NS_ENSURE_SUCCESS(rv, rv);
NS_IF_ADDREF(*aResult = nodeInfo->NameAtom());
*aResult = NS_NewAtom(aNode.GetText());
} else {
rv = NameFromType(type, aResult);
}

View File

@ -1364,7 +1364,8 @@ nsSVGElement::AddMappedSVGValue(nsIAtom* aName, nsISupports* aValue,
else {
nsCOMPtr<nsINodeInfo> ni;
ni = mNodeInfo->NodeInfoManager()->GetNodeInfo(aName, nsnull,
aNamespaceID);
aNamespaceID,
nsIDOMNode::ATTRIBUTE_NODE);
NS_ENSURE_TRUE(ni, NS_ERROR_OUT_OF_MEMORY);
rv = mMappedAttributes.SetAndTakeAttr(ni, attrVal);

View File

@ -339,7 +339,9 @@ nsSVGUseElement::CreateAnonymousContent()
return nsnull;
nsCOMPtr<nsINodeInfo> nodeInfo;
nodeInfo = nodeInfoManager->GetNodeInfo(nsGkAtoms::svg, nsnull, kNameSpaceID_SVG);
nodeInfo = nodeInfoManager->GetNodeInfo(nsGkAtoms::svg, nsnull,
kNameSpaceID_SVG,
nsIDOMNode::ELEMENT_NODE);
if (!nodeInfo)
return nsnull;

View File

@ -954,7 +954,8 @@ nsXBLContentSink::AddAttributesToXULPrototype(const PRUnichar **aAtts,
}
else {
nsCOMPtr<nsINodeInfo> ni;
ni = mNodeInfoManager->GetNodeInfo(localName, prefix, nameSpaceID);
ni = mNodeInfoManager->GetNodeInfo(localName, prefix, nameSpaceID,
nsIDOMNode::ATTRIBUTE_NODE);
attrs[i].mName.SetTo(ni);
}

View File

@ -89,7 +89,8 @@ NS_NewXMLCDATASection(nsIContent** aInstancePtrResult,
nsCOMPtr<nsINodeInfo> ni;
ni = aNodeInfoManager->GetNodeInfo(nsGkAtoms::cdataTagName,
nsnull, kNameSpaceID_None);
nsnull, kNameSpaceID_None,
nsIDOMNode::CDATA_SECTION_NODE);
NS_ENSURE_TRUE(ni, NS_ERROR_OUT_OF_MEMORY);
nsXMLCDATASection *instance = new nsXMLCDATASection(ni.forget());
@ -105,6 +106,8 @@ NS_NewXMLCDATASection(nsIContent** aInstancePtrResult,
nsXMLCDATASection::nsXMLCDATASection(already_AddRefed<nsINodeInfo> aNodeInfo)
: nsGenericDOMDataNode(aNodeInfo)
{
NS_ABORT_IF_FALSE(mNodeInfo->NodeType() == nsIDOMNode::CDATA_SECTION_NODE,
"Bad NodeType in aNodeInfo");
}
nsXMLCDATASection::~nsXMLCDATASection()

View File

@ -50,7 +50,10 @@ NS_NewXMLProcessingInstruction(nsIContent** aInstancePtrResult,
{
NS_PRECONDITION(aNodeInfoManager, "Missing nodeinfo manager");
if (aTarget.EqualsLiteral("xml-stylesheet")) {
nsCOMPtr<nsIAtom> target = do_GetAtom(aTarget);
NS_ENSURE_TRUE(target, NS_ERROR_OUT_OF_MEMORY);
if (target == nsGkAtoms::xml_stylesheet) {
return NS_NewXMLStylesheetProcessingInstruction(aInstancePtrResult,
aNodeInfoManager, aData);
}
@ -59,11 +62,13 @@ NS_NewXMLProcessingInstruction(nsIContent** aInstancePtrResult,
nsCOMPtr<nsINodeInfo> ni;
ni = aNodeInfoManager->GetNodeInfo(nsGkAtoms::processingInstructionTagName,
nsnull, kNameSpaceID_None);
nsnull, kNameSpaceID_None,
nsIDOMNode::PROCESSING_INSTRUCTION_NODE,
target);
NS_ENSURE_TRUE(ni, NS_ERROR_OUT_OF_MEMORY);
nsXMLProcessingInstruction *instance =
new nsXMLProcessingInstruction(ni.forget(), aTarget, aData);
new nsXMLProcessingInstruction(ni.forget(), aData);
if (!instance) {
return NS_ERROR_OUT_OF_MEMORY;
}
@ -74,11 +79,13 @@ NS_NewXMLProcessingInstruction(nsIContent** aInstancePtrResult,
}
nsXMLProcessingInstruction::nsXMLProcessingInstruction(already_AddRefed<nsINodeInfo> aNodeInfo,
const nsAString& aTarget,
const nsAString& aData)
: nsGenericDOMDataNode(aNodeInfo),
mTarget(aTarget)
: nsGenericDOMDataNode(aNodeInfo)
{
NS_ABORT_IF_FALSE(mNodeInfo->NodeType() ==
nsIDOMNode::PROCESSING_INSTRUCTION_NODE,
"Bad NodeType in aNodeInfo");
SetTextInternal(0, mText.GetLength(),
aData.BeginReading(), aData.Length(),
PR_FALSE); // Don't notify (bug 420429).
@ -110,7 +117,7 @@ NS_IMPL_RELEASE_INHERITED(nsXMLProcessingInstruction, nsGenericDOMDataNode)
NS_IMETHODIMP
nsXMLProcessingInstruction::GetTarget(nsAString& aTarget)
{
aTarget.Assign(mTarget);
NodeInfo()->GetExtraName()->ToString(aTarget);
return NS_OK;
}
@ -151,7 +158,7 @@ nsXMLProcessingInstruction::NodeType()
void
nsXMLProcessingInstruction::NodeName(nsAString& aNodeName)
{
aNodeName.Assign(mTarget);
NodeInfo()->GetExtraName()->ToString(aNodeName);
}
nsGenericDOMDataNode*
@ -161,7 +168,7 @@ nsXMLProcessingInstruction::CloneDataNode(nsINodeInfo *aNodeInfo,
nsAutoString data;
nsGenericDOMDataNode::GetData(data);
nsCOMPtr<nsINodeInfo> ni = aNodeInfo;
return new nsXMLProcessingInstruction(ni.forget(), mTarget, data);
return new nsXMLProcessingInstruction(ni.forget(), data);
}
#ifdef DEBUG
@ -175,7 +182,7 @@ nsXMLProcessingInstruction::List(FILE* out, PRInt32 aIndent) const
nsAutoString tmp;
ToCString(tmp, 0, mText.GetLength());
tmp.Insert(mTarget.get(), 0);
tmp.Insert(nsDependentAtomString(NodeInfo()->GetExtraName()).get(), 0);
fputs(NS_LossyConvertUTF16toASCII(tmp).get(), out);
fputs(">\n", out);

View File

@ -50,7 +50,6 @@ class nsXMLProcessingInstruction : public nsGenericDOMDataNode,
{
public:
nsXMLProcessingInstruction(already_AddRefed<nsINodeInfo> aNodeInfo,
const nsAString& aTarget,
const nsAString& aData);
virtual ~nsXMLProcessingInstruction();
@ -89,8 +88,6 @@ protected:
* aAttribute. Empty if the attribute isn't present.
*/
PRBool GetAttrValue(nsIAtom *aName, nsAString& aValue);
nsString mTarget;
};
#endif //nsIXMLProcessingInstruction_h___

View File

@ -105,8 +105,7 @@ NS_IMPL_RELEASE_INHERITED(nsXMLStylesheetPI, nsXMLProcessingInstruction)
nsXMLStylesheetPI::nsXMLStylesheetPI(already_AddRefed<nsINodeInfo> aNodeInfo,
const nsAString& aData)
: nsXMLProcessingInstruction(aNodeInfo, NS_LITERAL_STRING("xml-stylesheet"),
aData)
: nsXMLProcessingInstruction(aNodeInfo, aData)
{
}
@ -266,7 +265,9 @@ NS_NewXMLStylesheetProcessingInstruction(nsIContent** aInstancePtrResult,
nsCOMPtr<nsINodeInfo> ni;
ni = aNodeInfoManager->GetNodeInfo(nsGkAtoms::processingInstructionTagName,
nsnull, kNameSpaceID_None);
nsnull, kNameSpaceID_None,
nsIDOMNode::PROCESSING_INSTRUCTION_NODE,
nsGkAtoms::xml_stylesheet);
NS_ENSURE_TRUE(ni, NS_ERROR_OUT_OF_MEMORY);
nsXMLStylesheetPI *instance = new nsXMLStylesheetPI(ni.forget(), aData);

View File

@ -1012,7 +1012,8 @@ nsXMLContentSink::HandleStartElement(const PRUnichar *aName,
}
nsCOMPtr<nsINodeInfo> nodeInfo;
nodeInfo = mNodeInfoManager->GetNodeInfo(localName, prefix, nameSpaceID);
nodeInfo = mNodeInfoManager->GetNodeInfo(localName, prefix, nameSpaceID,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
result = CreateElement(aAtts, aAttsCount, nodeInfo, aLineNumber,

View File

@ -641,7 +641,6 @@ nsXHTMLParanoidFragmentSink::AddAttributes(const PRUnichar** aAtts,
nsTArray<const PRUnichar *> allowedAttrs;
PRInt32 nameSpaceID;
nsCOMPtr<nsIAtom> prefix, localName;
nsCOMPtr<nsINodeInfo> nodeInfo;
if (!mNullPrincipal) {
mNullPrincipal = do_CreateInstance(NS_NULLPRINCIPAL_CONTRACTID, &rv);
@ -651,10 +650,8 @@ nsXHTMLParanoidFragmentSink::AddAttributes(const PRUnichar** aAtts,
while (*aAtts) {
nsContentUtils::SplitExpatName(aAtts[0], getter_AddRefs(prefix),
getter_AddRefs(localName), &nameSpaceID);
nodeInfo = mNodeInfoManager->GetNodeInfo(localName, prefix, nameSpaceID);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
// check the attributes we allow that contain URIs
if (IsAttrURI(nodeInfo->NameAtom())) {
if (IsAttrURI(localName)) {
if (!aAtts[1])
rv = NS_ERROR_FAILURE;
if (!baseURI)
@ -696,21 +693,16 @@ nsXHTMLParanoidFragmentSink::HandleStartElement(const PRUnichar *aName,
if (nameSpaceID != kNameSpaceID_XHTML)
return NS_OK;
nsCOMPtr<nsINodeInfo> nodeInfo;
nodeInfo = mNodeInfoManager->GetNodeInfo(localName, prefix, nameSpaceID);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
// bounce it if it's not on the whitelist or we're inside
// <script> or <style>
nsCOMPtr<nsIAtom> name = nodeInfo->NameAtom();
if (mSkipLevel != 0 ||
name == nsGkAtoms::script ||
name == nsGkAtoms::style) {
localName == nsGkAtoms::script ||
localName == nsGkAtoms::style) {
++mSkipLevel; // track this so we don't spew script text
return NS_OK;
}
if (!sAllowedTags || !sAllowedTags->GetEntry(name))
if (!sAllowedTags || !sAllowedTags->GetEntry(localName))
return NS_OK;
// It's an allowed element, so let's scrub the attributes
@ -718,14 +710,10 @@ nsXHTMLParanoidFragmentSink::HandleStartElement(const PRUnichar *aName,
for (PRUint32 i = 0; i < aAttsCount; i += 2) {
nsContentUtils::SplitExpatName(aAtts[i], getter_AddRefs(prefix),
getter_AddRefs(localName), &nameSpaceID);
nodeInfo = mNodeInfoManager->GetNodeInfo(localName, prefix, nameSpaceID);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
name = nodeInfo->NameAtom();
// Add if it's xmlns, xml: or on the HTML whitelist
if (nameSpaceID == kNameSpaceID_XMLNS ||
nameSpaceID == kNameSpaceID_XML ||
(sAllowedAttributes && sAllowedAttributes->GetEntry(name))) {
(sAllowedAttributes && sAllowedAttributes->GetEntry(localName))) {
allowedAttrs.AppendElement(aAtts[i]);
allowedAttrs.AppendElement(aAtts[i + 1]);
}
@ -752,17 +740,12 @@ nsXHTMLParanoidFragmentSink::HandleEndElement(const PRUnichar *aName)
return NS_OK;
}
nsCOMPtr<nsINodeInfo> nodeInfo;
nodeInfo = mNodeInfoManager->GetNodeInfo(localName, prefix, nameSpaceID);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
nsCOMPtr<nsIAtom> name = nodeInfo->NameAtom();
if (mSkipLevel != 0) {
--mSkipLevel;
return NS_OK;
}
if (!sAllowedTags || !sAllowedTags->GetEntry(name)) {
if (!sAllowedTags || !sAllowedTags->GetEntry(localName)) {
return NS_OK;
}

View File

@ -285,7 +285,8 @@ txMozillaTextOutput::createXHTMLElement(nsIAtom* aName,
nsCOMPtr<nsINodeInfo> ni;
ni = mDocument->NodeInfoManager()->
GetNodeInfo(aName, nsnull, kNameSpaceID_XHTML);
GetNodeInfo(aName, nsnull, kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(ni, NS_ERROR_OUT_OF_MEMORY);
return NS_NewHTMLElement(aResult, ni.forget(), NOT_FROM_PARSER);

View File

@ -561,7 +561,8 @@ txMozillaXMLOutput::startElementInternal(nsIAtom* aPrefix,
// Create the element
nsCOMPtr<nsINodeInfo> ni;
ni = mNodeInfoManager->GetNodeInfo(aLocalName, aPrefix, aNsID);
ni = mNodeInfoManager->GetNodeInfo(aLocalName, aPrefix, aNsID,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(ni, NS_ERROR_OUT_OF_MEMORY);
NS_NewElement(getter_AddRefs(mOpenedElement), aNsID, ni.forget(),
@ -968,7 +969,8 @@ txMozillaXMLOutput::createHTMLElement(nsIAtom* aName,
nsCOMPtr<nsINodeInfo> ni;
ni = mNodeInfoManager->GetNodeInfo(aName, nsnull,
kNameSpaceID_XHTML);
kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(ni, NS_ERROR_OUT_OF_MEMORY);
return NS_NewHTMLElement(aResult, ni.forget(), mCreatingNewDocument ?

View File

@ -536,7 +536,9 @@ nsXTFElementWrapper::GetExistingAttrNameFromQName(const nsAString& aStr) const
if (!nodeInfo) {
nsCOMPtr<nsIAtom> nameAtom = do_GetAtom(aStr);
if (HandledByInner(nameAtom))
nodeInfo = mNodeInfo->NodeInfoManager()->GetNodeInfo(nameAtom, nsnull, kNameSpaceID_None).get();
nodeInfo = mNodeInfo->NodeInfoManager()->
GetNodeInfo(nameAtom, nsnull, kNameSpaceID_None,
nsIDOMNode::ATTRIBUTE_NODE).get();
}
return nodeInfo;

View File

@ -329,9 +329,9 @@ nsXULElement::Create(nsXULPrototypeElement* aPrototype,
nsCOMPtr<nsINodeInfo> nodeInfo;
if (aDocument) {
nsINodeInfo* ni = aPrototype->mNodeInfo;
nodeInfo = aDocument->NodeInfoManager()->GetNodeInfo(ni->NameAtom(),
ni->GetPrefixAtom(),
ni->NamespaceID());
nodeInfo = aDocument->NodeInfoManager()->
GetNodeInfo(ni->NameAtom(), ni->GetPrefixAtom(), ni->NamespaceID(),
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
}
else {
@ -2652,7 +2652,8 @@ nsXULPrototypeElement::Serialize(nsIObjectOutputStream* aStream,
if (mAttributes[i].mName.IsAtom()) {
ni = mNodeInfo->NodeInfoManager()->
GetNodeInfo(mAttributes[i].mName.Atom(), nsnull,
kNameSpaceID_None);
kNameSpaceID_None,
nsIDOMNode::ATTRIBUTE_NODE);
NS_ASSERTION(ni, "the nodeinfo should already exist");
}
else {

View File

@ -465,7 +465,8 @@ XULContentSinkImpl::NormalizeAttributeString(const PRUnichar *aExpatName,
nsCOMPtr<nsINodeInfo> ni;
ni = mNodeInfoManager->GetNodeInfo(localName, prefix,
nameSpaceID);
nameSpaceID,
nsIDOMNode::ATTRIBUTE_NODE);
NS_ENSURE_TRUE(ni, NS_ERROR_OUT_OF_MEMORY);
aName.SetTo(ni);
@ -518,7 +519,8 @@ XULContentSinkImpl::HandleStartElement(const PRUnichar *aName,
getter_AddRefs(localName), &nameSpaceID);
nsCOMPtr<nsINodeInfo> nodeInfo;
nodeInfo = mNodeInfoManager->GetNodeInfo(localName, prefix, nameSpaceID);
nodeInfo = mNodeInfoManager->GetNodeInfo(localName, prefix, nameSpaceID,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
nsresult rv = NS_OK;

View File

@ -3704,7 +3704,8 @@ nsXULDocument::CreateElementFromPrototype(nsXULPrototypeElement* aPrototype,
nsCOMPtr<nsINodeInfo> newNodeInfo;
newNodeInfo = mNodeInfoManager->GetNodeInfo(aPrototype->mNodeInfo->NameAtom(),
aPrototype->mNodeInfo->GetPrefixAtom(),
aPrototype->mNodeInfo->NamespaceID());
aPrototype->mNodeInfo->NamespaceID(),
nsIDOMNode::ELEMENT_NODE);
if (!newNodeInfo) return NS_ERROR_OUT_OF_MEMORY;
nsCOMPtr<nsIContent> content;
PRInt32 ns = newNodeInfo->NamespaceID();

View File

@ -317,7 +317,11 @@ nsXULPrototypeDocument::Read(nsIObjectInputStream* aStream)
rv |= aStream->ReadString(localName);
nsCOMPtr<nsINodeInfo> nodeInfo;
// Using PR_UINT16_MAX here as we don't know which nodeinfos will be
// used for attributes and which for elements. And that doesn't really
// matter.
rv |= mNodeInfoManager->GetNodeInfo(localName, prefix, namespaceURI,
PR_UINT16_MAX,
getter_AddRefs(nodeInfo));
if (!nodeInfos.AppendObject(nodeInfo))
rv |= NS_ERROR_OUT_OF_MEMORY;
@ -369,7 +373,8 @@ GetNodeInfos(nsXULPrototypeElement* aPrototype,
nsAttrName* name = &aPrototype->mAttributes[i].mName;
if (name->IsAtom()) {
ni = aPrototype->mNodeInfo->NodeInfoManager()->
GetNodeInfo(name->Atom(), nsnull, kNameSpaceID_None);
GetNodeInfo(name->Atom(), nsnull, kNameSpaceID_None,
nsIDOMNode::ATTRIBUTE_NODE);
NS_ENSURE_TRUE(ni, NS_ERROR_OUT_OF_MEMORY);
}
else {

View File

@ -1401,7 +1401,8 @@ nsXULContentBuilder::CreateElement(PRInt32 aNameSpaceID,
nsCOMPtr<nsIContent> result;
nsCOMPtr<nsINodeInfo> nodeInfo;
nodeInfo = doc->NodeInfoManager()->GetNodeInfo(aTag, nsnull, aNameSpaceID);
nodeInfo = doc->NodeInfoManager()->GetNodeInfo(aTag, nsnull, aNameSpaceID,
nsIDOMNode::ELEMENT_NODE);
rv = NS_NewElement(getter_AddRefs(result), aNameSpaceID, nodeInfo.forget(),
NOT_FROM_PARSER);

View File

@ -1535,8 +1535,9 @@ nsCSSFrameConstructor::CreateGeneratedContent(nsFrameConstructorState& aState,
// XXX Check if it's an image type we can handle...
nsCOMPtr<nsINodeInfo> nodeInfo;
nodeInfo = mDocument->NodeInfoManager()->GetNodeInfo(nsGkAtoms::mozgeneratedcontentimage, nsnull,
kNameSpaceID_XHTML);
nodeInfo = mDocument->NodeInfoManager()->
GetNodeInfo(nsGkAtoms::mozgeneratedcontentimage, nsnull,
kNameSpaceID_XHTML, nsIDOMNode::ELEMENT_NODE);
nsCOMPtr<nsIContent> content;
NS_NewGenConImageContent(getter_AddRefs(content), nodeInfo.forget(),
@ -1712,7 +1713,8 @@ nsCSSFrameConstructor::CreateGeneratedContentItem(nsFrameConstructorState& aStat
nsIAtom* elemName = aPseudoElement == nsCSSPseudoElements::ePseudo_before ?
nsGkAtoms::mozgeneratedcontentbefore : nsGkAtoms::mozgeneratedcontentafter;
nodeInfo = mDocument->NodeInfoManager()->GetNodeInfo(elemName, nsnull,
kNameSpaceID_None);
kNameSpaceID_None,
nsIDOMNode::ELEMENT_NODE);
nsCOMPtr<nsIContent> container;
nsresult rv = NS_NewXMLElement(getter_AddRefs(container), nodeInfo.forget());
if (NS_FAILED(rv))

View File

@ -378,17 +378,20 @@ nsContentDLF::CreateBlankDocument(nsILoadGroup *aLoadGroup,
nsCOMPtr<nsINodeInfo> htmlNodeInfo;
// generate an html html element
htmlNodeInfo = nim->GetNodeInfo(nsGkAtoms::html, 0, kNameSpaceID_XHTML);
htmlNodeInfo = nim->GetNodeInfo(nsGkAtoms::html, 0, kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
nsCOMPtr<nsIContent> htmlElement =
NS_NewHTMLHtmlElement(htmlNodeInfo.forget());
// generate an html head element
htmlNodeInfo = nim->GetNodeInfo(nsGkAtoms::head, 0, kNameSpaceID_XHTML);
htmlNodeInfo = nim->GetNodeInfo(nsGkAtoms::head, 0, kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
nsCOMPtr<nsIContent> headElement =
NS_NewHTMLHeadElement(htmlNodeInfo.forget());
// generate an html body elemment
htmlNodeInfo = nim->GetNodeInfo(nsGkAtoms::body, 0, kNameSpaceID_XHTML);
htmlNodeInfo = nim->GetNodeInfo(nsGkAtoms::body, 0, kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
nsCOMPtr<nsIContent> bodyElement =
NS_NewHTMLBodyElement(htmlNodeInfo.forget());

View File

@ -1029,7 +1029,8 @@ nsComboboxControlFrame::CreateAnonymousContent(nsTArray<ContentInfo>& aElements)
return NS_ERROR_OUT_OF_MEMORY;
nsCOMPtr<nsINodeInfo> nodeInfo;
nodeInfo = nimgr->GetNodeInfo(nsGkAtoms::button, nsnull, kNameSpaceID_XHTML);
nodeInfo = nimgr->GetNodeInfo(nsGkAtoms::button, nsnull, kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
// create button which drops the list down
NS_NewHTMLElement(getter_AddRefs(mButtonContent), nodeInfo.forget(),

View File

@ -237,7 +237,8 @@ nsFileControlFrame::CreateAnonymousContent(nsTArray<ContentInfo>& aElements)
nsCOMPtr<nsINodeInfo> nodeInfo;
nodeInfo = doc->NodeInfoManager()->GetNodeInfo(nsGkAtoms::input, nsnull,
kNameSpaceID_XHTML);
kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
// Create the text content
NS_NewHTMLElement(getter_AddRefs(mTextContent), nodeInfo.forget(),
@ -291,7 +292,8 @@ nsFileControlFrame::CreateAnonymousContent(nsTArray<ContentInfo>& aElements)
// Create the browse button
nodeInfo = doc->NodeInfoManager()->GetNodeInfo(nsGkAtoms::input, nsnull,
kNameSpaceID_XHTML);
kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_NewHTMLElement(getter_AddRefs(mBrowse), nodeInfo.forget(),
dom::NOT_FROM_PARSER);
if (!mBrowse)
@ -317,7 +319,8 @@ nsFileControlFrame::CreateAnonymousContent(nsTArray<ContentInfo>& aElements)
if (mode != 0) {
mCaptureMouseListener->mMode = mode;
nodeInfo = doc->NodeInfoManager()->GetNodeInfo(nsGkAtoms::input, nsnull,
kNameSpaceID_XHTML);
kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_NewHTMLElement(getter_AddRefs(mCapture), nodeInfo.forget(),
dom::NOT_FROM_PARSER);
if (!mCapture)

View File

@ -195,7 +195,8 @@ nsIsIndexFrame::CreateAnonymousContent(nsTArray<ContentInfo>& aElements)
// Create an hr
nsCOMPtr<nsINodeInfo> hrInfo;
hrInfo = nimgr->GetNodeInfo(nsGkAtoms::hr, nsnull, kNameSpaceID_XHTML);
hrInfo = nimgr->GetNodeInfo(nsGkAtoms::hr, nsnull, kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_NewHTMLElement(getter_AddRefs(mPreHr), hrInfo.forget(),
dom::NOT_FROM_PARSER);
@ -214,7 +215,8 @@ nsIsIndexFrame::CreateAnonymousContent(nsTArray<ContentInfo>& aElements)
// Create text input field
nsCOMPtr<nsINodeInfo> inputInfo;
inputInfo = nimgr->GetNodeInfo(nsGkAtoms::input, nsnull, kNameSpaceID_XHTML);
inputInfo = nimgr->GetNodeInfo(nsGkAtoms::input, nsnull, kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_NewHTMLElement(getter_AddRefs(mInputContent), inputInfo.forget(),
dom::NOT_FROM_PARSER);
@ -232,7 +234,8 @@ nsIsIndexFrame::CreateAnonymousContent(nsTArray<ContentInfo>& aElements)
mInputContent->AddEventListenerByIID(mListener, NS_GET_IID(nsIDOMKeyListener));
// Create an hr
hrInfo = nimgr->GetNodeInfo(nsGkAtoms::hr, nsnull, kNameSpaceID_XHTML);
hrInfo = nimgr->GetNodeInfo(nsGkAtoms::hr, nsnull, kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_NewHTMLElement(getter_AddRefs(mPostHr), hrInfo.forget(),
dom::NOT_FROM_PARSER);
if (!mPostHr || !aElements.AppendElement(mPostHr))

View File

@ -90,7 +90,8 @@ nsProgressFrame::CreateAnonymousContent(nsTArray<ContentInfo>& aElements)
nsCOMPtr<nsINodeInfo> nodeInfo;
nodeInfo = doc->NodeInfoManager()->GetNodeInfo(nsGkAtoms::div, nsnull,
kNameSpaceID_XHTML);
kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
// Create the div.

View File

@ -2437,7 +2437,8 @@ nsGfxScrollFrameInner::CreateAnonymousContent(
presContext->Document()->NodeInfoManager();
nsCOMPtr<nsINodeInfo> nodeInfo;
nodeInfo = nodeInfoManager->GetNodeInfo(nsGkAtoms::scrollbar, nsnull,
kNameSpaceID_XUL);
kNameSpaceID_XUL,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
if (canHaveHorizontal) {
@ -2465,7 +2466,8 @@ nsGfxScrollFrameInner::CreateAnonymousContent(
if (isResizable) {
nsCOMPtr<nsINodeInfo> nodeInfo;
nodeInfo = nodeInfoManager->GetNodeInfo(nsGkAtoms::resizer, nsnull,
kNameSpaceID_XUL);
kNameSpaceID_XUL,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
NS_TrustedNewXULElement(getter_AddRefs(mResizerContent), nodeInfo.forget());
@ -2510,7 +2512,8 @@ nsGfxScrollFrameInner::CreateAnonymousContent(
if (canHaveHorizontal && canHaveVertical) {
nodeInfo = nodeInfoManager->GetNodeInfo(nsGkAtoms::scrollcorner, nsnull,
kNameSpaceID_XUL);
kNameSpaceID_XUL,
nsIDOMNode::ELEMENT_NODE);
NS_TrustedNewXULElement(getter_AddRefs(mScrollCornerContent), nodeInfo.forget());
if (!aElements.AppendElement(mScrollCornerContent))
return NS_ERROR_OUT_OF_MEMORY;

View File

@ -100,7 +100,8 @@ nsVideoFrame::CreateAnonymousContent(nsTArray<ContentInfo>& aElements)
// before we load, or on a subsequent load.
nodeInfo = nodeInfoManager->GetNodeInfo(nsGkAtoms::img,
nsnull,
kNameSpaceID_XHTML);
kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
Element* element = NS_NewHTMLImageElement(nodeInfo.forget());
mPosterImage = element;
@ -134,7 +135,8 @@ nsVideoFrame::CreateAnonymousContent(nsTArray<ContentInfo>& aElements)
// actual controls.
nodeInfo = nodeInfoManager->GetNodeInfo(nsGkAtoms::videocontrols,
nsnull,
kNameSpaceID_XUL);
kNameSpaceID_XUL,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
NS_TrustedNewXULElement(getter_AddRefs(mVideoControls), nodeInfo.forget());

View File

@ -122,7 +122,8 @@ nsDocElementBoxFrame::CreateAnonymousContent(nsTArray<ContentInfo>& aElements)
// create the top-secret popupgroup node. shhhhh!
nsCOMPtr<nsINodeInfo> nodeInfo;
nodeInfo = nodeInfoManager->GetNodeInfo(nsGkAtoms::popupgroup,
nsnull, kNameSpaceID_XUL);
nsnull, kNameSpaceID_XUL,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
nsresult rv = NS_NewXULElement(getter_AddRefs(mPopupgroupContent),
@ -134,7 +135,8 @@ nsDocElementBoxFrame::CreateAnonymousContent(nsTArray<ContentInfo>& aElements)
// create the top-secret default tooltip node. shhhhh!
nodeInfo = nodeInfoManager->GetNodeInfo(nsGkAtoms::tooltip, nsnull,
kNameSpaceID_XUL);
kNameSpaceID_XUL,
nsIDOMNode::ELEMENT_NODE);
NS_ENSURE_TRUE(nodeInfo, NS_ERROR_OUT_OF_MEMORY);
rv = NS_NewXULElement(getter_AddRefs(mTooltipContent), nodeInfo.forget());

View File

@ -377,7 +377,8 @@ nsHtml5TreeOperation::Perform(nsHtml5TreeOpExecutor* aBuilder,
}
nsCOMPtr<nsIContent> newContent;
nsCOMPtr<nsINodeInfo> nodeInfo = aBuilder->GetNodeInfoManager()->GetNodeInfo(name, nsnull, ns);
nsCOMPtr<nsINodeInfo> nodeInfo = aBuilder->GetNodeInfoManager()->
GetNodeInfo(name, nsnull, ns, nsIDOMNode::ELEMENT_NODE);
NS_ASSERTION(nodeInfo, "Got null nodeinfo.");
NS_NewElement(getter_AddRefs(newContent),
ns, nodeInfo.forget(),
@ -418,7 +419,8 @@ nsHtml5TreeOperation::Perform(nsHtml5TreeOpExecutor* aBuilder,
nsCOMPtr<nsINodeInfo> optionNodeInfo =
aBuilder->GetNodeInfoManager()->GetNodeInfo(nsHtml5Atoms::option,
nsnull,
kNameSpaceID_XHTML);
kNameSpaceID_XHTML,
nsIDOMNode::ELEMENT_NODE);
for (PRUint32 i = 0; i < theContent.Length(); ++i) {
nsCOMPtr<nsIContent> optionElt;