summaryrefslogtreecommitdiffstats
path: root/dom/base
diff options
context:
space:
mode:
authorGaming4JC <g4jc@hyperbola.info>2020-01-01 14:56:19 -0500
committerGaming4JC <g4jc@hyperbola.info>2020-01-26 15:49:16 -0500
commita2b56b295b8bd089b74c5d93148edafe7e6da912 (patch)
treeb982cd6ea8477203d0081c64224f9955bd376d84 /dom/base
parenta1cce3b2b00bbd9f4983013ddd8934a7bccb9e99 (diff)
downloadUXP-a2b56b295b8bd089b74c5d93148edafe7e6da912.tar
UXP-a2b56b295b8bd089b74c5d93148edafe7e6da912.tar.gz
UXP-a2b56b295b8bd089b74c5d93148edafe7e6da912.tar.lz
UXP-a2b56b295b8bd089b74c5d93148edafe7e6da912.tar.xz
UXP-a2b56b295b8bd089b74c5d93148edafe7e6da912.zip
Bug 1276438 part 1. Move the implementation of the .body getter from nsHTMLDocument to nsIDocument.
Tag UXP Issue #1344 Tag UXP Issue #252
Diffstat (limited to 'dom/base')
-rw-r--r--dom/base/nsDocument.cpp20
-rw-r--r--dom/base/nsIDocument.h4
2 files changed, 24 insertions, 0 deletions
diff --git a/dom/base/nsDocument.cpp b/dom/base/nsDocument.cpp
index afe88a454..83c2e5bb7 100644
--- a/dom/base/nsDocument.cpp
+++ b/dom/base/nsDocument.cpp
@@ -6536,6 +6536,26 @@ nsIDocument::GetHtmlChildElement(nsIAtom* aTag)
return nullptr;
}
+nsGenericHTMLElement*
+nsIDocument::GetBody()
+{
+ Element* html = GetHtmlElement();
+ if (!html) {
+ return nullptr;
+ }
+
+ for (nsIContent* child = html->GetFirstChild();
+ child;
+ child = child->GetNextSibling()) {
+ if (child->IsHTMLElement(nsGkAtoms::body) ||
+ child->IsHTMLElement(nsGkAtoms::frameset)) {
+ return static_cast<nsGenericHTMLElement*>(child);
+ }
+ }
+
+ return nullptr;
+}
+
Element*
nsDocument::GetTitleElement()
{
diff --git a/dom/base/nsIDocument.h b/dom/base/nsIDocument.h
index fdaee39ca..b3879c624 100644
--- a/dom/base/nsIDocument.h
+++ b/dom/base/nsIDocument.h
@@ -61,6 +61,7 @@ class nsFrameLoader;
class nsHTMLCSSStyleSheet;
class nsHTMLDocument;
class nsHTMLStyleSheet;
+class nsGenericHTMLElement;
class nsIAtom;
class nsIBFCacheEntry;
class nsIChannel;
@@ -1036,6 +1037,9 @@ public:
Element* GetHeadElement() {
return GetHtmlChildElement(nsGkAtoms::head);
}
+ // Get the "body" in the sense of document.body: The first <body> or
+ // <frameset> that's a child of a root <html>
+ nsGenericHTMLElement* GetBody();
/**
* Accessors to the collection of stylesheets owned by this document.