diff --git a/mozilla/content/xml/document/src/nsXMLDocument.cpp b/mozilla/content/xml/document/src/nsXMLDocument.cpp index bc3cbbb1b13..33dea764a7c 100644 --- a/mozilla/content/xml/document/src/nsXMLDocument.cpp +++ b/mozilla/content/xml/document/src/nsXMLDocument.cpp @@ -772,8 +772,34 @@ nsXMLDocument::CreateElementNS(const nsString& aNamespaceURI, const nsString& aQualifiedName, nsIDOMElement** aReturn) { - NS_NOTYETIMPLEMENTED("write me"); - return NS_ERROR_NOT_IMPLEMENTED; + nsresult rv = NS_OK; + + nsCOMPtr nodeInfo; + rv = mNodeInfoManager->GetNodeInfo(aQualifiedName, aNamespaceURI, + *getter_AddRefs(nodeInfo)); + NS_ENSURE_SUCCESS(rv, rv); + + PRInt32 namespaceID; + nodeInfo->GetNamespaceID(namespaceID); + + nsIContent* content; + if (namespaceID == kNameSpaceID_HTML) { + nsIHTMLContent* htmlContent; + + rv = NS_CreateHTMLElement(&htmlContent, nodeInfo); + content = (nsIContent*)htmlContent; + } + else { + nsIXMLContent* xmlContent; + rv = NS_NewXMLElement(&xmlContent, nodeInfo); + content = NS_STATIC_CAST(nsIXMLContent *, xmlContent); + } + + NS_ENSURE_SUCCESS(rv, rv); + + content->SetContentID(mNextContentID++); + + return content->QueryInterface(kIDOMElementIID, (void**)aReturn); } NS_IMETHODIMP diff --git a/mozilla/layout/xml/document/src/nsXMLDocument.cpp b/mozilla/layout/xml/document/src/nsXMLDocument.cpp index bc3cbbb1b13..33dea764a7c 100644 --- a/mozilla/layout/xml/document/src/nsXMLDocument.cpp +++ b/mozilla/layout/xml/document/src/nsXMLDocument.cpp @@ -772,8 +772,34 @@ nsXMLDocument::CreateElementNS(const nsString& aNamespaceURI, const nsString& aQualifiedName, nsIDOMElement** aReturn) { - NS_NOTYETIMPLEMENTED("write me"); - return NS_ERROR_NOT_IMPLEMENTED; + nsresult rv = NS_OK; + + nsCOMPtr nodeInfo; + rv = mNodeInfoManager->GetNodeInfo(aQualifiedName, aNamespaceURI, + *getter_AddRefs(nodeInfo)); + NS_ENSURE_SUCCESS(rv, rv); + + PRInt32 namespaceID; + nodeInfo->GetNamespaceID(namespaceID); + + nsIContent* content; + if (namespaceID == kNameSpaceID_HTML) { + nsIHTMLContent* htmlContent; + + rv = NS_CreateHTMLElement(&htmlContent, nodeInfo); + content = (nsIContent*)htmlContent; + } + else { + nsIXMLContent* xmlContent; + rv = NS_NewXMLElement(&xmlContent, nodeInfo); + content = NS_STATIC_CAST(nsIXMLContent *, xmlContent); + } + + NS_ENSURE_SUCCESS(rv, rv); + + content->SetContentID(mNextContentID++); + + return content->QueryInterface(kIDOMElementIID, (void**)aReturn); } NS_IMETHODIMP