From a2b56b295b8bd089b74c5d93148edafe7e6da912 Mon Sep 17 00:00:00 2001 From: Gaming4JC Date: Wed, 1 Jan 2020 14:56:19 -0500 Subject: Bug 1276438 part 1. Move the implementation of the .body getter from nsHTMLDocument to nsIDocument. Tag UXP Issue #1344 Tag UXP Issue #252 --- dom/base/nsDocument.cpp | 20 ++++++++++++++++++++ dom/base/nsIDocument.h | 4 ++++ 2 files changed, 24 insertions(+) (limited to 'dom/base') 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(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 or + // that's a child of a root + nsGenericHTMLElement* GetBody(); /** * Accessors to the collection of stylesheets owned by this document. -- cgit v1.2.3