From 63e304e8630de5d97386e2cc86004f7940dafc7e Mon Sep 17 00:00:00 2001 From: "jst%netscape.com" Date: Sun, 14 May 2000 23:55:04 +0000 Subject: [PATCH] Implementing createElementNS(). --- content/xml/document/src/nsXMLDocument.cpp | 30 ++++++++++++++++++++-- layout/xml/document/src/nsXMLDocument.cpp | 30 ++++++++++++++++++++-- 2 files changed, 56 insertions(+), 4 deletions(-) diff --git a/content/xml/document/src/nsXMLDocument.cpp b/content/xml/document/src/nsXMLDocument.cpp index bc3cbbb1b133..33dea764a7c2 100644 --- a/content/xml/document/src/nsXMLDocument.cpp +++ b/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/layout/xml/document/src/nsXMLDocument.cpp b/layout/xml/document/src/nsXMLDocument.cpp index bc3cbbb1b133..33dea764a7c2 100644 --- a/layout/xml/document/src/nsXMLDocument.cpp +++ b/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