blob: 7fcb783d97d85674c84bc6608b6e5117787bffca [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<title>HTML Templates: The template contents is a DocumentFragment</title>
<meta name="author" title="Sergey G. Grekhov" href="mailto:sgrekhov@unipro.ru">
<meta name="assert" content="The template contents must be a DocumentFragment">
<link rel="help" href="http://www.w3.org/TR/2013/WD-html-templates-20130214/#definitions">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src='/html/resources/common.js'></script>
<link rel="stylesheet" href="/resources/testharness.css">
</head>
<body>
<div id="log"></div>
<script type="text/javascript">
test(function() {
var doc = newHTMLDocument();
var template = doc.createElement('template');
doc.body.appendChild(template);
assert_equals(template.content.nodeType, Node.DOCUMENT_FRAGMENT_NODE,
'Template content should be a DocumentFragment');
assert_class_string(template.content, 'DocumentFragment',
'Template content class should be a DocumentFragment');
}, 'The template contents must be a DocumentFragment (empty template)');
test(function() {
var doc = newHTMLDocument();
var template = doc.createElement('template');
template.innerHTML = '<div>This is a div</div><span>This is a span</span>';
doc.body.appendChild(template);
assert_equals(template.content.nodeType, Node.DOCUMENT_FRAGMENT_NODE,
'Template content should be a DocumentFragment');
assert_class_string(template.content, 'DocumentFragment',
'Template content class should be a DocumentFragment');
}, 'The template contents must be a DocumentFragment (non empty template)');
test(function() {
var doc = newHTMLDocument();
var template = doc.createElement('template');
template.innerHTML = '<div>This is a div</div>';
doc.body.appendChild(template);
assert_equals(template.content.nodeType, Node.DOCUMENT_FRAGMENT_NODE,
'Template content should be a documentFragment');
}, 'The template contents must be a DocumentFragment (non empty template '
+ 'containing div which is an Element instance)');
test(function() {
var doc = newHTMLDocument();
var template = doc.createElement('template');
template.innerHTML = 'Some text';
doc.body.appendChild(template);
assert_equals(template.content.nodeType, Node.DOCUMENT_FRAGMENT_NODE,
'Template content should be a documentFragment');
assert_class_string(template.content, 'DocumentFragment',
'Template content class should be a DocumentFragment');
}, 'The template contents must be a DocumentFragment (not empty template '
+ 'containing text node)');
test(function() {
var doc = newHTMLDocument();
var template = doc.createElement('template');
template.innerHTML = '<template id="t2">Some text</template>';
doc.body.appendChild(template);
assert_equals(template.content.nodeType, Node.DOCUMENT_FRAGMENT_NODE,
'Template content should be a documentFragment');
assert_class_string(template.content, 'DocumentFragment',
'Template content class should be a DocumentFragment');
var nestedTemplate = template.content.querySelector("#t2");
assert_equals(nestedTemplate.content.nodeType, Node.DOCUMENT_FRAGMENT_NODE,
'Nested template content should be a documentFragment');
assert_class_string(nestedTemplate.content, 'DocumentFragment',
'Nested template content class should be a DocumentFragment');
}, 'The template contents must be a DocumentFragment (nested template '
+ 'containing a text node)');
testInIFrame('../resources/template-contents-empty.html', function(context) {
var doc = context.iframes[0].contentDocument;
var template = doc.querySelector('template');
assert_equals(template.content.nodeType, Node.DOCUMENT_FRAGMENT_NODE,
'Template content should be a documentFragment');
assert_class_string(template.content, 'DocumentFragment',
'Template content class should be a DocumentFragment');
}, 'The template contents must be a DocumentFragment (the empty template tag '
+ 'inside HTML file loaded in iframe)');
testInIFrame('../resources/template-contents.html', function(context) {
var doc = context.iframes[0].contentDocument;
var template = doc.querySelector('template');
assert_equals(template.content.nodeType, Node.DOCUMENT_FRAGMENT_NODE,
'Template content should be a documentFragment');
assert_class_string(template.content, 'DocumentFragment',
'Template content class should be a DocumentFragment');
}, 'The template contents must be a DocumentFragment (non empty template '
+ 'tag inside HTML file loaded in iframe)');
testInIFrame('../resources/template-contents-text.html', function(context) {
var doc = context.iframes[0].contentDocument;
var template = doc.querySelector('template');
assert_equals(template.content.nodeType, Node.DOCUMENT_FRAGMENT_NODE,
'Template content should be a documentFragment');
assert_class_string(template.content, 'DocumentFragment',
'Template content class should be a DocumentFragment');
}, 'The template contents must be a DocumentFragment (the template tag '
+ 'with some text inside HTML file loaded in iframe)');
testInIFrame('../resources/template-contents-nested.html', function(context) {
var doc = context.iframes[0].contentDocument;
var template = doc.querySelector('template');
assert_equals(template.content.nodeType, Node.DOCUMENT_FRAGMENT_NODE,
'Template content should be a documentFragment');
assert_class_string(template.content, 'DocumentFragment',
'Template content class should be a DocumentFragment');
var nestedTemplate = template.content.querySelector("template");
assert_equals(nestedTemplate.content.nodeType, Node.DOCUMENT_FRAGMENT_NODE,
'Nested template content should be a documentFragment');
assert_class_string(nestedTemplate.content, 'DocumentFragment',
'Nested template content class should be a DocumentFragment');
}, 'The template contents must be a DocumentFragment (the template tag '
+ 'with nested template tag inside HTML file loaded in iframe)');
</script>
</body>
</html>