1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
<!DOCTYPE html>
<html>
<head>
<title>HTML Templates: Template element as a descendant of the body element.</title>
<meta name="author" title="Sergey G. Grekhov" href="mailto:sgrekhov@unipro.ru">
<meta name="author" title="Aleksei Yu. Semenov" href="mailto:a.semenov@unipro.ru">
<meta name="assert" content="Template element can be a descendant of the body element">
<link rel="help" href="http://www.w3.org/TR/2013/WD-html-templates-20130214/#template-element">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src='/html/resources/common.js'></script>
</head>
<body>
<div id="log"></div>
<script type="text/javascript">
function templateIsAChild(element) {
element.innerHTML = '<template>some text</template>';
assert_not_equals(element.querySelector('template'), null,
'Template element should be a descendant of the ' + element.tagName + ' element');
}
function templateIsDisallowedAsAChild(element) {
element.innerHTML = '<template>some text</template>';
assert_equals(element.querySelector('template'), null,
'Template element should not be allowed as a descendant of the ' + element.tagName + ' element');
}
function templateIsAnIndirectChild(element) {
element.innerHTML = '<div><template>some text</template></div>';
assert_not_equals(element.querySelector('template'), null,
'Template element should be a descendant of the ' + element.tagName + ' element');
}
function templateIsDisallowedAsAnIndirectChild(element) {
element.innerHTML = '<div><template>some text</template></div>';
assert_equals(element.querySelector('template'), null,
'Template element should not be allowed as indirect descendant of the ' + element.tagName + ' element');
}
function templateIsAnAppendedChild(doc, element) {
var template = doc.createElement('template');
element.appendChild(template);
assert_not_equals(element.querySelector('template'), null,
'Template element should be a descendant of the ' + element.tagName + ' element');
}
function templateIsAnAppendedIndirectChild(doc, element) {
var template = doc.createElement('template');
var div = doc.createElement('div');
div.appendChild(template);
element.appendChild(div);
assert_not_equals(element.querySelector('template'), null,
'Template element should be a descendant of the ' + element.tagName + ' element');
}
var doc = newHTMLDocument();
var frameset = doc.createElement('frameset');
var parameters = [['Template element as a descendant of the BODY element. ' +
'Template element is created by innerHTML',
doc.body],
['Template element as a descendant of the HEAD element. ' +
'Template element is created by innerHTML',
doc.head],
];
generate_tests(templateIsAChild, parameters,
'Template element as a descendant of the HEAD and BODY elements');
parameters = [['Template element as a descendant of the FRAMESET element. ' +
'Template element is created by innerHTML',
frameset],
];
generate_tests(templateIsDisallowedAsAChild, parameters,
'Template element should be disallowed as a descendant of the FRAMESET elements');
parameters = [['Template element as an indirect descendant of the BODY element. ' +
'Template element is created by innerHTML',
doc.body],
['Template element as an indirect descendant of the HEAD element. ' +
'Template element is created by innerHTML',
doc.head],
];
generate_tests(templateIsAnIndirectChild, parameters,
'Template element as an indirect descendant of the HEAD, BODY and FRAMESET elements');
parameters = [['Template element as a descendant of the FRAMESET element. ' +
'Template element is created by innerHTML',
frameset],
];
generate_tests(templateIsDisallowedAsAnIndirectChild, parameters,
'Template element should be disallowed as an indirect descendant of the FRAMESET elements');
parameters = [['Template element as a descendant of the BODY element. ' +
'Template element is appended by appendChild()',
doc, doc.body],
['Template element as a descendant of the HEAD element. ' +
'Template element is appended by appendChild()',
doc, doc.head],
['Template element as a descendant of the FRAMESET element. ' +
'Template element is appended by appendChild()',
doc, frameset]
];
generate_tests(templateIsAnAppendedChild, parameters,
'Template element as a descendant of the HEAD, BODY and FRAMESET elements');
parameters = [['Template element as an indirect descendant of the BODY element. ' +
'Template element is appended by appendChild()',
doc, doc.body],
['Template element as an indirect descendant of the HEAD element. ' +
'Template element is appended by appendChild()',
doc, doc.head],
['Template element as an indirect descendant of the FRAMESET element. ' +
'Template element is appended by appendChild()',
doc, frameset]
];
generate_tests(templateIsAnAppendedIndirectChild, parameters,
'Template element as a descendant of the HEAD, BODY and FRAMESET elements');
</script>
</body>
</html>
|