Upstream version 7.35.144.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / w3c / web-platform-tests / html-templates / parsing-html-templates / creating-an-element-for-the-token / template-owner-document.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <title>HTML Templates: ownerDocument property of the element in template</title>
5 <meta name="author" title="Sergey G. Grekhov" href="mailto:sgrekhov@unipro.ru">
6 <meta name="author" title="Aleksei Yu. Semenov" href="mailto:a.semenov@unipro.ru">
7 <meta name="assert" content="ownerDocument property of the element appended to template must be set to the template contents owner of the ownerDocument of the template element">
8 <link rel="help" href="http://www.w3.org/TR/2013/WD-html-templates-20130214/#creating-an-element-for-a-token">
9 <script src="../../../../../resources/testharness.js"></script>
10 <script src="../../../../../resources/testharnessreport.js"></script>
11 <script src='../../testcommon.js'></script>
12 <link rel="stylesheet" href="../../../../../resources/testharness.css">
13 </head>
14 <body>
15 <div id="log"></div>
16 <script type="text/javascript">
17
18
19 test(function () {
20     var doc = newHTMLDocument();
21     doc.body.innerHTML = '<div><template id="tmpl1"><div id="div">DIV</div></template></div>';
22
23     var template = doc.querySelector('#tmpl1');
24
25     var div = template.content.querySelector('#div');
26
27     assert_equals(div.ownerDocument, template.content.ownerDocument,
28             'Wrong ownerDocument of the element in template');
29
30 }, 'Test ownerDocument property of the element in a template. '
31     + 'Current DOCUMENT has no browsing context. Test template element inside the div');
32
33
34
35 test(function () {
36     var doc = newHTMLDocument();
37     doc.body.innerHTML = '<template id="tmpl1"><div id="div">DIV</div></template>';
38
39     var template = doc.querySelector('#tmpl1');
40
41     var div = template.content.querySelector('#div');
42
43     assert_equals(div.ownerDocument, template.content.ownerDocument,
44             'Wrong ownerDocument of the element in template');
45
46 }, 'Test ownerDocument property of the element in a template. '
47     + 'Current DOCUMENT has no browsing context. Test template element '
48     + 'in the root of the body');
49
50
51
52 test(function () {
53     var doc = newHTMLDocument();
54     doc.head.innerHTML = '<template id="tmpl1"><div id="div">DIV</div></template>';
55
56     var template = doc.querySelector('#tmpl1');
57
58     var div = template.content.querySelector('#div');
59
60     assert_equals(div.ownerDocument, template.content.ownerDocument,
61             'Wrong ownerDocument of the element in template');
62
63 }, 'Test ownerDocument property of the element in a template. '
64     + 'Current DOCUMENT has no browsing context. Test template element '
65     + 'in the root of the head');
66
67
68
69 test(function () {
70     var doc = newHTMLDocument();
71
72     doc.open();
73     doc.write('<frameset><template id="tmpl1"><div id="div">DIV</div></template></frameset>');
74     doc.close();
75
76     var template = doc.querySelector('#tmpl1');
77
78     var div = template.content.querySelector('#div');
79
80     assert_equals(div.ownerDocument, template.content.ownerDocument,
81             'Wrong ownerDocument of the element in template');
82
83 }, 'Test ownerDocument property of the element in a template. '
84     + 'Current DOCUMENT has no browsing context. Test template element '
85     + 'in the root of the frameset');
86
87
88
89 test(function () {
90     var doc = newHTMLDocument();
91     doc.body.innerHTML = '<template id="tmpl1">'
92         + '<template id="tmpl2"><div id="div">DIV</div></template></template>';
93
94     var template = doc.querySelector('#tmpl1');
95
96     var nestedTemplate = template.content.querySelector('#tmpl2');
97
98     assert_equals(nestedTemplate.ownerDocument, template.content.ownerDocument,
99             'Wrong nested template owner document');
100
101     var div = nestedTemplate.content.querySelector('#div');
102
103     assert_equals(div.ownerDocument, nestedTemplate.content.ownerDocument,
104             'Wrong div ownerDocument');
105
106 }, 'Test ownerDocument property of the element in a nested template');
107
108
109
110 testInIFrame('../../resources/template-contents.html', function(context) {
111     var doc = context.iframes[0].contentDocument;
112
113     var template = doc.querySelector('template');
114
115     var div = template.content.querySelector('div');
116
117     assert_equals(div.ownerDocument, template.content.ownerDocument,
118             'Wrong ownerDocument of the element in template');
119
120 }, 'Test ownerDocument property of the element in a template. '
121    + 'Load HTML document from a file, current DOCUMENT has browsing context');
122
123
124
125 testInIFrame('../../resources/template-contents-nested.html', function(context) {
126     var doc = context.iframes[0].contentDocument;
127
128     var template = doc.querySelector('template');
129
130     var nestedTemplate = template.content.querySelector('template');
131
132     assert_equals(nestedTemplate.ownerDocument, template.content.ownerDocument,
133             'Wrong nested template owner document');
134
135     var div = nestedTemplate.content.querySelector('div');
136
137     assert_equals(div.ownerDocument, nestedTemplate.content.ownerDocument,
138             'Wrong div ownerDocument');
139
140 }, 'Test ownerDocument property of the element in a nested template. '
141     + 'Load HTML document from a file, current DOCUMENT has browsing context');
142
143
144
145 testInIFrame('../../resources/two-templates.html', function(context) {
146     var doc = context.iframes[0].contentDocument;
147
148     var template1 = doc.querySelector('#template1');
149     var div1 = template1.content.querySelector('div');
150     var template2 = doc.querySelector('#template2');
151     var div2 = template2.content.querySelector('div');
152
153     assert_equals(div1.ownerDocument, template1.content.ownerDocument,
154             'Wrong ownerDocument of the element in template');
155     assert_equals(div2.ownerDocument, template2.content.ownerDocument,
156             'Wrong ownerDocument of the element in template');
157     assert_equals(div1.ownerDocument, div2.ownerDocument,
158             'Different elements in the same document should share the same template contents owner');
159
160 }, 'Test ownerDocument property of two elements in a template. '
161     + 'Load HTML document from a file, current DOCUMENT has browsing context');
162
163
164 var parameters = [];
165
166 HTML5_ELEMENTS.forEach(function(value) {
167     if (value !== 'body' && value !== 'html' && value !== 'head' && value !== 'frameset') {
168
169         var doc = newHTMLDocument();
170
171         if (isVoidElement(value)) {
172             doc.body.innerHTML = '<template><' + value + '/></template>';
173         } else {
174             doc.body.innerHTML = '<template><' + value + '></' + value + '></template>';
175         }
176
177         var template = doc.querySelector('template');
178         var element = template.content.querySelector(value);
179
180         doc.body.appendChild(template);
181
182         parameters.push([
183                 'Test ownerDocument for the element ' + value + ' in the template',
184                 element.ownerDocument,
185                 template.content.ownerDocument
186             ]);
187     }
188 });
189 generate_tests(assert_equals, parameters,
190         'Test ownerDocument property of all HTML5 elements in a template. '
191             + 'Current DOCUMENT has no browsing context.');
192
193 var context = newContext();
194 parameters = [];
195
196 try {
197
198     HTML5_ELEMENTS.forEach(function(value) {
199
200         if (value !== 'body' && value !== 'html' && value !== 'head' && value !== 'frameset') {
201
202             var doc = newRenderedHTMLDocument(context);
203
204             if (isVoidElement(value)) {
205                 doc.body.innerHTML = '<template><' + value + '/></template>';
206             } else {
207                 doc.body.innerHTML = '<template><' + value + '></' + value + '></template>';
208             }
209
210             var template = doc.querySelector('template');
211             var element = template.content.querySelector(value);
212
213             doc.body.appendChild(template);
214
215             parameters.push([
216                     'Test ownerDocument for the element ' + value + ' in the template. '
217                         + 'Document has browsing context',
218                     element.ownerDocument,
219                     template.content.ownerDocument
220                 ]);
221         }
222     });
223     generate_tests(assert_equals, parameters,
224             'Test ownerDocument property of all HTML5 elements in a template. '
225                 + 'Current DOCUMENT has browsing context.');
226
227 } finally {
228     try {
229         cleanContext(context);
230     } catch (e) {
231         //do nothing
232     }
233 }
234
235 </script>
236 </body>
237 </html>