| <!DOCTYPE html> |
| |
| <script src="../../resources/js-test.js"></script> |
| |
| <script> |
| description('Tests getting and assigning values to document.body'); |
| |
| onload = function() { |
| frame = document.createElement('iframe'); |
| document.body.appendChild(frame); |
| |
| shouldThrow('frame.contentDocument.body = document.createElement("div")', '"HierarchyRequestError: Failed to set the \'body\' property on \'Document\': The new body element is of type \'DIV\'. It must be either a \'BODY\' or \'FRAMESET\' element."'); |
| shouldNotThrow('frame.contentDocument.body = document.createElement("frameset")'); |
| shouldBe('frame.contentDocument.documentElement.childNodes.length', '2'); |
| shouldNotThrow('frame.contentDocument.body = document.createElement("body")'); |
| shouldBe('frame.contentDocument.documentElement.childNodes.length', '2'); |
| |
| observer = new MutationObserver(function(records) { }); |
| observer.observe(frame.contentDocument, { subtree: true, childList: true }); |
| // If the nodes are the same this should be a noop. |
| frame.contentDocument.body = frame.contentDocument.body; |
| shouldBe('observer.takeRecords().length', '0'); |
| |
| // WebKit calls importNode() and appends a clone instead of the element you wanted. |
| newBody = document.createElement("body"); |
| frame.contentDocument.body = newBody; |
| shouldBe('frame.contentDocument.body', 'newBody'); |
| |
| newBody = frame.contentDocument.createElement('body'); |
| frame.contentDocument.body = newBody; |
| shouldBe("frame.contentDocument.body", "newBody") |
| |
| var html = frame.contentDocument.documentElement; |
| html.appendChild(document.createElement('body')); |
| html.appendChild(document.createElement('frameset')); |
| shouldBeEqualToString('frame.contentDocument.body.tagName', 'BODY'); |
| }; |
| </script> |
| |