summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/syntax/parsing/template/creating-an-element-for-the-token/template-owner-document.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/html/syntax/parsing/template/creating-an-element-for-the-token/template-owner-document.html')
-rw-r--r--testing/web-platform/tests/html/syntax/parsing/template/creating-an-element-for-the-token/template-owner-document.html221
1 files changed, 221 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/syntax/parsing/template/creating-an-element-for-the-token/template-owner-document.html b/testing/web-platform/tests/html/syntax/parsing/template/creating-an-element-for-the-token/template-owner-document.html
new file mode 100644
index 000000000..e1f999511
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/parsing/template/creating-an-element-for-the-token/template-owner-document.html
@@ -0,0 +1,221 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>HTML Templates: ownerDocument property of the element in template</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="ownerDocument property of the element appended to template must be set to the template contents owner of the ownerDocument of the template element">
+<link rel="help" href="http://www.w3.org/TR/2013/WD-html-templates-20130214/#creating-an-element-for-a-token">
+<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">
+
+
+test(function () {
+ var doc = newHTMLDocument();
+ doc.body.innerHTML = '<div><template id="tmpl1"><div id="div">DIV</div></template></div>';
+
+ var template = doc.querySelector('#tmpl1');
+
+ var div = template.content.querySelector('#div');
+
+ assert_equals(div.ownerDocument, template.content.ownerDocument,
+ 'Wrong ownerDocument of the element in template');
+
+}, 'Test ownerDocument property of the element in a template. '
+ + 'Current DOCUMENT has no browsing context. Test template element inside the div');
+
+
+
+test(function () {
+ var doc = newHTMLDocument();
+ doc.body.innerHTML = '<template id="tmpl1"><div id="div">DIV</div></template>';
+
+ var template = doc.querySelector('#tmpl1');
+
+ var div = template.content.querySelector('#div');
+
+ assert_equals(div.ownerDocument, template.content.ownerDocument,
+ 'Wrong ownerDocument of the element in template');
+
+}, 'Test ownerDocument property of the element in a template. '
+ + 'Current DOCUMENT has no browsing context. Test template element '
+ + 'in the root of the body');
+
+
+
+test(function () {
+ var doc = newHTMLDocument();
+ doc.head.innerHTML = '<template id="tmpl1"><div id="div">DIV</div></template>';
+
+ var template = doc.querySelector('#tmpl1');
+
+ var div = template.content.querySelector('#div');
+
+ assert_equals(div.ownerDocument, template.content.ownerDocument,
+ 'Wrong ownerDocument of the element in template');
+
+}, 'Test ownerDocument property of the element in a template. '
+ + 'Current DOCUMENT has no browsing context. Test template element '
+ + 'in the root of the head');
+
+
+
+test(function () {
+ var doc = newHTMLDocument();
+ doc.body.innerHTML = '<template id="tmpl1">'
+ + '<template id="tmpl2"><div id="div">DIV</div></template></template>';
+
+ var template = doc.querySelector('#tmpl1');
+
+ var nestedTemplate = template.content.querySelector('#tmpl2');
+
+ assert_equals(nestedTemplate.ownerDocument, template.content.ownerDocument,
+ 'Wrong nested template owner document');
+
+ var div = nestedTemplate.content.querySelector('#div');
+
+ assert_equals(div.ownerDocument, nestedTemplate.content.ownerDocument,
+ 'Wrong div ownerDocument');
+
+}, 'Test ownerDocument property of the element in a nested template');
+
+
+
+testInIFrame('/html/semantics/scripting-1/the-template-element/resources/template-contents.html', function(context) {
+ var doc = context.iframes[0].contentDocument;
+
+ var template = doc.querySelector('template');
+
+ var div = template.content.querySelector('div');
+
+ assert_equals(div.ownerDocument, template.content.ownerDocument,
+ 'Wrong ownerDocument of the element in template');
+
+}, 'Test ownerDocument property of the element in a template. '
+ + 'Load HTML document from a file, current DOCUMENT has browsing context');
+
+
+
+testInIFrame('/html/semantics/scripting-1/the-template-element/resources/template-contents-nested.html', function(context) {
+ var doc = context.iframes[0].contentDocument;
+
+ var template = doc.querySelector('template');
+
+ var nestedTemplate = template.content.querySelector('template');
+
+ assert_equals(nestedTemplate.ownerDocument, template.content.ownerDocument,
+ 'Wrong nested template owner document');
+
+ var div = nestedTemplate.content.querySelector('div');
+
+ assert_equals(div.ownerDocument, nestedTemplate.content.ownerDocument,
+ 'Wrong div ownerDocument');
+
+}, 'Test ownerDocument property of the element in a nested template. '
+ + 'Load HTML document from a file, current DOCUMENT has browsing context');
+
+
+
+testInIFrame('/html/semantics/scripting-1/the-template-element/resources/two-templates.html', function(context) {
+ var doc = context.iframes[0].contentDocument;
+
+ var template1 = doc.querySelector('#template1');
+ var div1 = template1.content.querySelector('div');
+ var template2 = doc.querySelector('#template2');
+ var div2 = template2.content.querySelector('div');
+
+ assert_equals(div1.ownerDocument, template1.content.ownerDocument,
+ 'Wrong ownerDocument of the element in template');
+ assert_equals(div2.ownerDocument, template2.content.ownerDocument,
+ 'Wrong ownerDocument of the element in template');
+ assert_equals(div1.ownerDocument, div2.ownerDocument,
+ 'Different elements in the same document should share the same template contents owner');
+
+}, 'Test ownerDocument property of two elements in a template. '
+ + 'Load HTML document from a file, current DOCUMENT has browsing context');
+
+
+var parameters = [];
+
+HTML5_ELEMENTS.forEach(function(value) {
+ if (value !== 'body' && value !== 'html' && value !== 'head' && value !== 'frameset') {
+
+ var doc = newHTMLDocument();
+
+ if (isVoidElement(value)) {
+ doc.body.innerHTML = '<template><' + value + '/></template>';
+ } else {
+ doc.body.innerHTML = '<template><' + value + '></' + value + '></template>';
+ }
+
+ var template = doc.querySelector('template');
+ var element = template.content.querySelector(value);
+
+ doc.body.appendChild(template);
+
+ parameters.push([
+ 'Test ownerDocument for the element ' + value + ' in the template',
+ element,
+ template
+ ]);
+ }
+});
+
+function compare_owners(element, template) {
+ assert_equals(element.ownerDocument, template.content.ownerDocument)
+}
+
+generate_tests(compare_owners, parameters,
+ 'Test ownerDocument property of all HTML5 elements in a template. '
+ + 'Current DOCUMENT has no browsing context.');
+
+var context = newContext();
+parameters = [];
+
+try {
+
+ HTML5_ELEMENTS.forEach(function(value) {
+
+ if (value !== 'body' && value !== 'html' && value !== 'head' && value !== 'frameset') {
+
+ var doc = newRenderedHTMLDocument(context);
+
+ if (isVoidElement(value)) {
+ doc.body.innerHTML = '<template><' + value + '/></template>';
+ } else {
+ doc.body.innerHTML = '<template><' + value + '></' + value + '></template>';
+ }
+
+ var template = doc.querySelector('template');
+ var element = template.content.querySelector(value);
+
+ doc.body.appendChild(template);
+
+ parameters.push([
+ 'Test ownerDocument for the element ' + value + ' in the template. '
+ + 'Document has browsing context',
+ element,
+ template
+ ]);
+ }
+ });
+ generate_tests(compare_owners, parameters,
+ 'Test ownerDocument property of all HTML5 elements in a template. '
+ + 'Current DOCUMENT has browsing context.');
+
+} finally {
+ try {
+ cleanContext(context);
+ } catch (e) {
+ //do nothing
+ }
+}
+
+</script>
+</body>
+</html>