diff --git a/mozilla/content/html/document/src/nsHTMLDocument.cpp b/mozilla/content/html/document/src/nsHTMLDocument.cpp
index bfbed8b7170..11f80712b65 100644
--- a/mozilla/content/html/document/src/nsHTMLDocument.cpp
+++ b/mozilla/content/html/document/src/nsHTMLDocument.cpp
@@ -51,6 +51,7 @@
#include "nsParserCIID.h"
#include "nsIDOMStyleSheet.h"
#include "nsIDOMStyleSheetCollection.h"
+#include "nsIDOMHTMLElement.h"
// Find/Serach Includes
@@ -83,6 +84,7 @@ static NS_DEFINE_IID(kIDOMStyleSheetIID, NS_IDOMSTYLESHEET_IID);
static NS_DEFINE_IID(kIScriptObjectOwnerIID, NS_ISCRIPTOBJECTOWNER_IID);
static NS_DEFINE_IID(kIDocumentObserverIID, NS_IDOCUMENT_OBSERVER_IID);
static NS_DEFINE_IID(kIHTMLContentContainerIID, NS_IHTMLCONTENTCONTAINER_IID);
+static NS_DEFINE_IID(kIDOMHTMLElementIID, NS_IDOMHTMLELEMENT_IID);
class nsDOMStyleSheetCollection : public nsIDOMStyleSheetCollection,
public nsIScriptObjectOwner,
@@ -747,8 +749,10 @@ nsHTMLDocument::GetURL(nsString& aURL)
NS_IMETHODIMP
nsHTMLDocument::GetBody(nsIDOMHTMLElement** aBody)
{
- //XXX TBI
- return NS_ERROR_NOT_IMPLEMENTED;
+ if (mBodyContent == nsnull && PR_FALSE == GetBodyContent()) {
+ return NS_ERROR_FAILURE;
+ }
+ return mBodyContent->QueryInterface(kIDOMHTMLElementIID, (void **)aBody);
}
NS_IMETHODIMP
@@ -1909,29 +1913,9 @@ NS_IMETHODIMP nsHTMLDocument::FindNext(const nsString &aSearchStr, PRBool aMatch
nsIDOMNode * start = nsnull;
nsIDOMNode * end = nsnull;
-
- nsString bodyStr("BODY");
nsIDOMNode * child;
- root->GetFirstChild(&child);
- while (child != nsnull) {
- nsIDOMElement* domElement;
- nsresult rv = child->QueryInterface(kIDOMElementIID,(void **)&domElement);
- if (NS_OK == rv) {
- nsString tagName;
- domElement->GetTagName(tagName);
- if (bodyStr.EqualsIgnoreCase(tagName)) {
- mBodyContent = child;
- break;
- }
- NS_RELEASE(domElement);
- }
- nsIDOMNode * node = child;
- NS_RELEASE(child);
- node->GetNextSibling(&child);
- }
-
- if (mBodyContent == nsnull) {
+ if (mBodyContent == nsnull && PR_FALSE == GetBodyContent()) {
return NS_OK;
}
@@ -2176,12 +2160,43 @@ NS_IMETHODIMP nsHTMLDocument::FindNext(const nsString &aSearchStr, PRBool aMatch
NS_RELEASE(startContent);
NS_RELEASE(endContent);
}
-
- NS_IF_RELEASE(mBodyContent);
-
return NS_OK;
}
+PRBool
+nsHTMLDocument::GetBodyContent()
+{
+ nsIDOMElement * root = nsnull;
+ if (NS_OK != GetDocumentElement(&root)) {
+ return PR_FALSE;
+ }
+
+ nsAutoString bodyStr("BODY");
+ nsIDOMNode * child;
+ root->GetFirstChild(&child);
+
+ while (child != nsnull) {
+ nsIDOMElement* domElement;
+ nsresult rv = child->QueryInterface(kIDOMElementIID,(void **)&domElement);
+ if (NS_OK == rv) {
+ nsString tagName;
+ domElement->GetTagName(tagName);
+ if (bodyStr.EqualsIgnoreCase(tagName)) {
+ mBodyContent = child;
+ NS_RELEASE(root);
+ NS_RELEASE(domElement);
+ return PR_TRUE;
+ }
+ NS_RELEASE(domElement);
+ }
+ nsIDOMNode * node = child;
+ NS_RELEASE(child);
+ node->GetNextSibling(&child);
+ }
+ NS_RELEASE(root);
+ return PR_FALSE;
+}
+
// forms related stuff
NS_IMETHODIMP
diff --git a/mozilla/content/html/document/src/nsHTMLDocument.h b/mozilla/content/html/document/src/nsHTMLDocument.h
index 8985fa094bf..639f9975527 100644
--- a/mozilla/content/html/document/src/nsHTMLDocument.h
+++ b/mozilla/content/html/document/src/nsHTMLDocument.h
@@ -146,6 +146,8 @@ protected:
static PRBool MatchLinks(nsIContent *aContent);
static PRBool MatchAnchors(nsIContent *aContent);
+ PRBool GetBodyContent();
+
nsIHTMLStyleSheet* mAttrStyleSheet;
nsIHTMLCSSStyleSheet* mStyleAttrStyleSheet;
nsDTDMode mDTDMode;
diff --git a/mozilla/layout/html/document/src/nsHTMLDocument.cpp b/mozilla/layout/html/document/src/nsHTMLDocument.cpp
index bfbed8b7170..11f80712b65 100644
--- a/mozilla/layout/html/document/src/nsHTMLDocument.cpp
+++ b/mozilla/layout/html/document/src/nsHTMLDocument.cpp
@@ -51,6 +51,7 @@
#include "nsParserCIID.h"
#include "nsIDOMStyleSheet.h"
#include "nsIDOMStyleSheetCollection.h"
+#include "nsIDOMHTMLElement.h"
// Find/Serach Includes
@@ -83,6 +84,7 @@ static NS_DEFINE_IID(kIDOMStyleSheetIID, NS_IDOMSTYLESHEET_IID);
static NS_DEFINE_IID(kIScriptObjectOwnerIID, NS_ISCRIPTOBJECTOWNER_IID);
static NS_DEFINE_IID(kIDocumentObserverIID, NS_IDOCUMENT_OBSERVER_IID);
static NS_DEFINE_IID(kIHTMLContentContainerIID, NS_IHTMLCONTENTCONTAINER_IID);
+static NS_DEFINE_IID(kIDOMHTMLElementIID, NS_IDOMHTMLELEMENT_IID);
class nsDOMStyleSheetCollection : public nsIDOMStyleSheetCollection,
public nsIScriptObjectOwner,
@@ -747,8 +749,10 @@ nsHTMLDocument::GetURL(nsString& aURL)
NS_IMETHODIMP
nsHTMLDocument::GetBody(nsIDOMHTMLElement** aBody)
{
- //XXX TBI
- return NS_ERROR_NOT_IMPLEMENTED;
+ if (mBodyContent == nsnull && PR_FALSE == GetBodyContent()) {
+ return NS_ERROR_FAILURE;
+ }
+ return mBodyContent->QueryInterface(kIDOMHTMLElementIID, (void **)aBody);
}
NS_IMETHODIMP
@@ -1909,29 +1913,9 @@ NS_IMETHODIMP nsHTMLDocument::FindNext(const nsString &aSearchStr, PRBool aMatch
nsIDOMNode * start = nsnull;
nsIDOMNode * end = nsnull;
-
- nsString bodyStr("BODY");
nsIDOMNode * child;
- root->GetFirstChild(&child);
- while (child != nsnull) {
- nsIDOMElement* domElement;
- nsresult rv = child->QueryInterface(kIDOMElementIID,(void **)&domElement);
- if (NS_OK == rv) {
- nsString tagName;
- domElement->GetTagName(tagName);
- if (bodyStr.EqualsIgnoreCase(tagName)) {
- mBodyContent = child;
- break;
- }
- NS_RELEASE(domElement);
- }
- nsIDOMNode * node = child;
- NS_RELEASE(child);
- node->GetNextSibling(&child);
- }
-
- if (mBodyContent == nsnull) {
+ if (mBodyContent == nsnull && PR_FALSE == GetBodyContent()) {
return NS_OK;
}
@@ -2176,12 +2160,43 @@ NS_IMETHODIMP nsHTMLDocument::FindNext(const nsString &aSearchStr, PRBool aMatch
NS_RELEASE(startContent);
NS_RELEASE(endContent);
}
-
- NS_IF_RELEASE(mBodyContent);
-
return NS_OK;
}
+PRBool
+nsHTMLDocument::GetBodyContent()
+{
+ nsIDOMElement * root = nsnull;
+ if (NS_OK != GetDocumentElement(&root)) {
+ return PR_FALSE;
+ }
+
+ nsAutoString bodyStr("BODY");
+ nsIDOMNode * child;
+ root->GetFirstChild(&child);
+
+ while (child != nsnull) {
+ nsIDOMElement* domElement;
+ nsresult rv = child->QueryInterface(kIDOMElementIID,(void **)&domElement);
+ if (NS_OK == rv) {
+ nsString tagName;
+ domElement->GetTagName(tagName);
+ if (bodyStr.EqualsIgnoreCase(tagName)) {
+ mBodyContent = child;
+ NS_RELEASE(root);
+ NS_RELEASE(domElement);
+ return PR_TRUE;
+ }
+ NS_RELEASE(domElement);
+ }
+ nsIDOMNode * node = child;
+ NS_RELEASE(child);
+ node->GetNextSibling(&child);
+ }
+ NS_RELEASE(root);
+ return PR_FALSE;
+}
+
// forms related stuff
NS_IMETHODIMP
diff --git a/mozilla/layout/html/document/src/nsHTMLDocument.h b/mozilla/layout/html/document/src/nsHTMLDocument.h
index 8985fa094bf..639f9975527 100644
--- a/mozilla/layout/html/document/src/nsHTMLDocument.h
+++ b/mozilla/layout/html/document/src/nsHTMLDocument.h
@@ -146,6 +146,8 @@ protected:
static PRBool MatchLinks(nsIContent *aContent);
static PRBool MatchAnchors(nsIContent *aContent);
+ PRBool GetBodyContent();
+
nsIHTMLStyleSheet* mAttrStyleSheet;
nsIHTMLCSSStyleSheet* mStyleAttrStyleSheet;
nsDTDMode mDTDMode;