From ca60bedc580f4eb8f1a6ecae19b002c598bcd8e5 Mon Sep 17 00:00:00 2001 From: "vidur%netscape.com" Date: Thu, 4 Feb 1999 02:16:11 +0000 Subject: [PATCH] Implemented nsHTMLDocument::SetBody git-svn-id: svn://10.0.0.236/trunk@19635 18797224-902f-48f8-a5cc-f745e15eee43 --- .../html/document/src/nsHTMLDocument.cpp | 39 ++++++++++++++++++- .../html/document/src/nsHTMLDocument.cpp | 39 ++++++++++++++++++- 2 files changed, 74 insertions(+), 4 deletions(-) diff --git a/mozilla/content/html/document/src/nsHTMLDocument.cpp b/mozilla/content/html/document/src/nsHTMLDocument.cpp index 657d7175ef7..7e1e938945f 100644 --- a/mozilla/content/html/document/src/nsHTMLDocument.cpp +++ b/mozilla/content/html/document/src/nsHTMLDocument.cpp @@ -1034,8 +1034,43 @@ nsHTMLDocument::GetBody(nsIDOMHTMLElement** aBody) NS_IMETHODIMP nsHTMLDocument::SetBody(nsIDOMHTMLElement* aBody) { - //XXX TBI - return NS_ERROR_NOT_IMPLEMENTED; + nsresult result = NS_OK; + nsIDOMElement * root = nsnull; + result = GetDocumentElement(&root); + if (NS_OK != result) { + return result; + } + + nsAutoString bodyStr("BODY"); + nsIDOMNode * child; + root->GetFirstChild(&child); + + while (child != nsnull) { + nsIDOMElement* domElement; + result = child->QueryInterface(kIDOMElementIID,(void **)&domElement); + if (NS_OK == result) { + nsString tagName; + domElement->GetTagName(tagName); + if (bodyStr.EqualsIgnoreCase(tagName)) { + nsIDOMNode* ret; + + result = root->ReplaceChild(aBody, child, &ret); + NS_IF_RELEASE(ret); + NS_IF_RELEASE(mBodyContent); + + NS_RELEASE(child); + NS_RELEASE(root); + NS_RELEASE(domElement); + return result; + } + NS_RELEASE(domElement); + } + nsIDOMNode * node = child; + NS_RELEASE(child); + node->GetNextSibling(&child); + } + NS_RELEASE(root); + return PR_FALSE; } NS_IMETHODIMP diff --git a/mozilla/layout/html/document/src/nsHTMLDocument.cpp b/mozilla/layout/html/document/src/nsHTMLDocument.cpp index 657d7175ef7..7e1e938945f 100644 --- a/mozilla/layout/html/document/src/nsHTMLDocument.cpp +++ b/mozilla/layout/html/document/src/nsHTMLDocument.cpp @@ -1034,8 +1034,43 @@ nsHTMLDocument::GetBody(nsIDOMHTMLElement** aBody) NS_IMETHODIMP nsHTMLDocument::SetBody(nsIDOMHTMLElement* aBody) { - //XXX TBI - return NS_ERROR_NOT_IMPLEMENTED; + nsresult result = NS_OK; + nsIDOMElement * root = nsnull; + result = GetDocumentElement(&root); + if (NS_OK != result) { + return result; + } + + nsAutoString bodyStr("BODY"); + nsIDOMNode * child; + root->GetFirstChild(&child); + + while (child != nsnull) { + nsIDOMElement* domElement; + result = child->QueryInterface(kIDOMElementIID,(void **)&domElement); + if (NS_OK == result) { + nsString tagName; + domElement->GetTagName(tagName); + if (bodyStr.EqualsIgnoreCase(tagName)) { + nsIDOMNode* ret; + + result = root->ReplaceChild(aBody, child, &ret); + NS_IF_RELEASE(ret); + NS_IF_RELEASE(mBodyContent); + + NS_RELEASE(child); + NS_RELEASE(root); + NS_RELEASE(domElement); + return result; + } + NS_RELEASE(domElement); + } + nsIDOMNode * node = child; + NS_RELEASE(child); + node->GetNextSibling(&child); + } + NS_RELEASE(root); + return PR_FALSE; } NS_IMETHODIMP