79 lines
2.5 KiB
HTML
79 lines
2.5 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="../../resources/js-test-pre.js"></script>
|
|
</head>
|
|
<body>
|
|
<iframe id="xmlframe" onload="frameLoaded()" style="height:0px" src="data:application/xhtml+xml,<?xml version='1.0' encoding='UTF-8'?><body/>"></iframe>
|
|
<iframe id="xmlframe2" onload="frameLoaded()" style="height:0px" src="data:application/xhtml+xml,<?xml version='1.0' encoding='UTF-8'?><body/>"></iframe>
|
|
<script>
|
|
description('Test DOMJIT document.body accessor works.');
|
|
|
|
if (window.testRunner)
|
|
testRunner.waitUntilDone();
|
|
|
|
var target = null;
|
|
var result = null;
|
|
function runTest()
|
|
{
|
|
var xmlDocument = document.getElementById('xmlframe').contentDocument;
|
|
var xmlDocument2 = document.getElementById('xmlframe2').contentDocument;
|
|
var html = document.createElement('html');
|
|
var body = document.createElement('body');
|
|
|
|
var htmlOnly = document.implementation.createDocument('', null, null);
|
|
htmlOnly.appendChild(htmlOnly.createElement('html'));
|
|
|
|
var noHTML = document.implementation.createDocument('', null, null);
|
|
var first = noHTML.createElement('nohtml');
|
|
first.appendChild(noHTML.createElement('body'));
|
|
noHTML.appendChild(first);
|
|
|
|
var framesetDoc = document.implementation.createDocument('', null, null);
|
|
var first = document.createElement('html');
|
|
var frameset = document.createElement('frameset');
|
|
first.appendChild(frameset);
|
|
framesetDoc.appendChild(first);
|
|
|
|
var targets = [
|
|
['HTMLDocument', document, document.getElementsByTagName('body')[0]],
|
|
['XMLDocument', xmlDocument, null],
|
|
['XMLDocument2', xmlDocument2, body],
|
|
['Null', document.implementation.createDocument('', null, null), null],
|
|
['HTMLElement', htmlOnly, null],
|
|
['NoHTML', noHTML, null],
|
|
['Frameset', framesetDoc, frameset],
|
|
];
|
|
|
|
// Put HTMLBodyElement in XMLDocument!
|
|
html.appendChild(body);
|
|
xmlDocument2.replaceChild(html, xmlDocument2.firstChild);
|
|
|
|
for ([name, target, result] of targets) {
|
|
var text = `
|
|
function test${name}(element, result)
|
|
{
|
|
for (var i = 0; i < 1e4; ++i) {
|
|
if (element.body !== result)
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
`;
|
|
shouldBeTrue(`(${text})(target, result)`);
|
|
}
|
|
|
|
if (window.testRunner)
|
|
testRunner.notifyDone();
|
|
}
|
|
var count = 0;
|
|
function frameLoaded()
|
|
{
|
|
if (++count === 2)
|
|
runTest();
|
|
}
|
|
</script>
|
|
<script src="../../resources/js-test-post.js"></script>
|
|
</body>
|
|
</html>
|