summaryrefslogtreecommitdiffstats
path: root/dom
diff options
context:
space:
mode:
authorGaming4JC <g4jc@hyperbola.info>2020-01-01 15:08:37 -0500
committerGaming4JC <g4jc@hyperbola.info>2020-01-26 15:50:07 -0500
commitce285b6f2d48ce945b194fd7982cd6a5a306e939 (patch)
treec772c2ce051f12afd4c1879d0c7b1dbc0db282c4 /dom
parent32f3f8826f396fd17c1c77770d073d0abf15c904 (diff)
downloadUXP-ce285b6f2d48ce945b194fd7982cd6a5a306e939.tar
UXP-ce285b6f2d48ce945b194fd7982cd6a5a306e939.tar.gz
UXP-ce285b6f2d48ce945b194fd7982cd6a5a306e939.tar.lz
UXP-ce285b6f2d48ce945b194fd7982cd6a5a306e939.tar.xz
UXP-ce285b6f2d48ce945b194fd7982cd6a5a306e939.zip
Bug 1276438 part 3. Align the .body setter with the spec a bit better.
There are two changes here: 1) We allow setting .body even if the root element is not an <html:html>. This is what the spec says to do, and what we used to do before the changes in bug 366200. No tests for this yet, pending https://github.com/whatwg/html/issues/3403 getting resolved. 2) We use GetBody(), not GetBodyElement(), to look for an existing thing to replace. This matters if there are <frameset>s involved. Tag UXP Issue #1344 Tag UXP Issue #252
Diffstat (limited to 'dom')
-rw-r--r--dom/base/nsDocument.cpp8
1 files changed, 3 insertions, 5 deletions
diff --git a/dom/base/nsDocument.cpp b/dom/base/nsDocument.cpp
index 69cbff16c..3faa39ab3 100644
--- a/dom/base/nsDocument.cpp
+++ b/dom/base/nsDocument.cpp
@@ -6562,18 +6562,16 @@ nsIDocument::SetBody(nsGenericHTMLElement* newBody, ErrorResult& rv)
nsCOMPtr<Element> root = GetRootElement();
// The body element must be either a body tag or a frameset tag. And we must
- // have a html root tag, otherwise GetBody will not return the newly set
- // body.
+ // have a root element to be able to add kids to it.
if (!newBody ||
!newBody->IsAnyOfHTMLElements(nsGkAtoms::body, nsGkAtoms::frameset) ||
- !root || !root->IsHTMLElement() ||
- !root->IsHTMLElement(nsGkAtoms::html)) {
+ !root) {
rv.Throw(NS_ERROR_DOM_HIERARCHY_REQUEST_ERR);
return;
}
// Use DOM methods so that we pass through the appropriate security checks.
- nsCOMPtr<Element> currentBody = GetBodyElement();
+ nsCOMPtr<Element> currentBody = GetBody();
if (currentBody) {
root->ReplaceChild(*newBody, *currentBody, rv);
} else {