diff options
Diffstat (limited to 'testing/web-platform/tests/html/dom/documents/dom-tree-accessors/Document.body.html')
-rw-r--r-- | testing/web-platform/tests/html/dom/documents/dom-tree-accessors/Document.body.html | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/Document.body.html b/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/Document.body.html new file mode 100644 index 000000000..07f1edf93 --- /dev/null +++ b/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/Document.body.html @@ -0,0 +1,169 @@ +<!DOCTYPE html> +<title>Document.body</title> +<link rel="author" title="Ms2ger" href="mailto:ms2ger@gmail.com"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#dom-document-body"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="log"></div> +<script> +function createDocument() { + var doc = document.implementation.createHTMLDocument(""); + doc.removeChild(doc.documentElement); + return doc; +} +test(function() { + var doc = createDocument(); + assert_equals(doc.body, null); +}, "Childless document"); +test(function() { + var doc = createDocument(); + doc.appendChild(doc.createElement("html")); + assert_equals(doc.body, null); +}, "Childless html element"); +test(function() { + var doc = createDocument(); + var html = doc.appendChild(doc.createElement("html")); + var b = + html.appendChild(doc.createElement("body")); + html.appendChild(doc.createElement("frameset")); + assert_equals(doc.body, b); +}, "Body followed by frameset inside the html element"); +test(function() { + var doc = createDocument(); + var html = doc.appendChild(doc.createElement("html")); + var f = + html.appendChild(doc.createElement("frameset")); + html.appendChild(doc.createElement("body")); + assert_equals(doc.body, f); +}, "Frameset followed by body inside the html element"); +test(function() { + var doc = createDocument(); + var html = + doc.appendChild(doc.createElementNS("http://example.org/test", "html")); + html.appendChild(doc.createElement("body")); + html.appendChild(doc.createElement("frameset")); + assert_equals(doc.body, null); +}, "Body followed by frameset inside a non-HTML html element"); +test(function() { + var doc = createDocument(); + var html = + doc.appendChild(doc.createElementNS("http://example.org/test", "html")); + html.appendChild(doc.createElement("frameset")); + html.appendChild(doc.createElement("body")); + assert_equals(doc.body, null); +}, "Frameset followed by body inside a non-HTML html element"); +test(function() { + var doc = createDocument(); + var html = doc.appendChild(doc.createElement("html")); + html.appendChild( + doc.createElementNS("http://example.org/test", "body")); + var b = html.appendChild(doc.createElement("body")); + assert_equals(doc.body, b); +}, "Non-HTML body followed by body inside the html element"); +test(function() { + var doc = createDocument(); + var html = doc.appendChild(doc.createElement("html")); + html.appendChild( + doc.createElementNS("http://example.org/test", "frameset")); + var b = html.appendChild(doc.createElement("body")); + assert_equals(doc.body, b); +}, "Non-HTML frameset followed by body inside the html element"); +test(function() { + var doc = createDocument(); + var html = doc.appendChild(doc.createElement("html")); + var x = html.appendChild(doc.createElement("x")); + x.appendChild(doc.createElement("body")); + var body = html.appendChild(doc.createElement("body")); + assert_equals(doc.body, body); +}, "Body inside an x element followed by a body"); +test(function() { + var doc = createDocument(); + var html = doc.appendChild(doc.createElement("html")); + var x = html.appendChild(doc.createElement("x")); + x.appendChild(doc.createElement("frameset")); + var frameset = html.appendChild(doc.createElement("frameset")); + assert_equals(doc.body, frameset); +}, "Frameset inside an x element followed by a frameset"); + +// Root node is not a html element. +test(function() { + var doc = createDocument(); + doc.appendChild(doc.createElement("body")); + assert_equals(doc.body, null); +}, "Body as the root node"); +test(function() { + var doc = createDocument(); + doc.appendChild(doc.createElement("frameset")); + assert_equals(doc.body, null); +}, "Frameset as the root node"); +test(function() { + var doc = createDocument(); + var body = doc.appendChild(doc.createElement("body")); + body.appendChild(doc.createElement("frameset")); + assert_equals(doc.body, null); +}, "Body as the root node with a frameset child"); +test(function() { + var doc = createDocument(); + var frameset = doc.appendChild(doc.createElement("frameset")); + frameset.appendChild(doc.createElement("body")); + assert_equals(doc.body, null); +}, "Frameset as the root node with a body child"); +test(function() { + var doc = createDocument(); + doc.appendChild(doc.createElementNS("http://example.org/test", "body")); + assert_equals(doc.body, null); +}, "Non-HTML body as the root node"); +test(function() { + var doc = createDocument(); + doc.appendChild(doc.createElementNS("http://example.org/test", "frameset")); + assert_equals(doc.body, null); +}, "Non-HTML frameset as the root node"); + +test(function() { + assert_not_equals(document.body, null); + assert_true(document.body instanceof HTMLBodyElement, "should be HTMLBodyElement"); + assert_equals(document.body.tagName, "BODY"); +}, "existing document's body"); + + +var originalBody = document.body; +test(function() { + assert_throws(new TypeError(), function() { + document.body = "text" + }) + assert_equals(document.body, originalBody); +}, "Setting document.body to a string.") +test(function() { + assert_throws("HierarchyRequestError", function() { + document.body = document.createElement("div") + }) + assert_equals(document.body, originalBody); +}, "Setting document.body to a div element.") +test(function() { + var doc = createDocument(); + assert_throws("HierarchyRequestError", function() { + doc.body = doc.createElement("body") + }) + assert_equals(doc.body, null); +}, "Setting document.body when there's no root element.") +test(function() { + var doc = document.implementation.createHTMLDocument(); + + var new_body = doc.createElement("body"); + assert_true(new_body instanceof HTMLBodyElement, "should be HTMLBodyElement"); + assert_equals(new_body.tagName, "BODY"); + + doc.body = new_body; + assert_equals(doc.body, new_body); +}, "Setting document.body to a new body element."); +test(function() { + var doc = document.implementation.createHTMLDocument(); + + var new_frameset = doc.createElement("frameset"); + assert_true(new_frameset instanceof HTMLFrameSetElement, "should be HTMLFrameSetElement"); + assert_equals(new_frameset.tagName, "FRAMESET"); + + doc.body = new_frameset; + assert_equals(doc.body, new_frameset, "test6-3, append frameset to a new document"); +}, "Setting document.body to a new frameset element."); +</script> |