| Index: LayoutTests/imported/web-platform-tests/html/semantics/scripting-1/the-template-element/template-element/node-document-changes.html
|
| diff --git a/LayoutTests/imported/web-platform-tests/html/semantics/scripting-1/the-template-element/template-element/node-document-changes.html b/LayoutTests/imported/web-platform-tests/html/semantics/scripting-1/the-template-element/template-element/node-document-changes.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..918298a2752fd29b19c2d231979c0f4ba47b6fde
|
| --- /dev/null
|
| +++ b/LayoutTests/imported/web-platform-tests/html/semantics/scripting-1/the-template-element/template-element/node-document-changes.html
|
| @@ -0,0 +1,200 @@
|
| +<!DOCTYPE html>
|
| +<html>
|
| +<head>
|
| +<title>HTML Templates: When node's document changes its owner document should be changed</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="When a template element's node document changes, the template element's content DocumentFragment must be adopted into the new node document's template contents owner document">
|
| +<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='../testcommon.js'></script>
|
| +<link rel="stylesheet" href="../../../../../../../resources/testharness.css">
|
| +</head>
|
| +<body>
|
| +<div id="log"></div>
|
| +<script type="text/javascript">
|
| +
|
| +
|
| +test(function() {
|
| + var doc1 = newHTMLDocument();
|
| + var template = doc1.createElement('template');
|
| +
|
| + assert_equals(template.ownerDocument, doc1, 'Wrong template node owner document');
|
| + assert_not_equals(template.content.ownerDocument, doc1,
|
| + 'Wrong template content owner document');
|
| +
|
| + var doc2 = newHTMLDocument();
|
| + var template2 = doc2.createElement('template');
|
| + doc2.body.appendChild(template);
|
| +
|
| + assert_equals(template.ownerDocument, template2.ownerDocument,
|
| + 'Template node owner document should be changed');
|
| + assert_equals(template.content.ownerDocument, template2.content.ownerDocument,
|
| + 'Template content owner document should be changed');
|
| +
|
| +}, 'Changing of template element\'s node document. ' +
|
| + 'Test that ownerDocument of an empty template and its content changes');
|
| +
|
| +
|
| +test(function() {
|
| + var doc1 = newHTMLDocument();
|
| + doc1.body.innerHTML = '<template id="tmpl"><div>Div content</div> And some more text</template>';
|
| +
|
| + var template = doc1.querySelector('#tmpl');
|
| +
|
| + assert_equals(template.ownerDocument, doc1,
|
| + 'Wrong template node owner document');
|
| + assert_not_equals(template.content.ownerDocument, doc1,
|
| + 'Wrong template content owner document');
|
| +
|
| + var doc2 = newHTMLDocument();
|
| + var template2 = doc2.createElement('template');
|
| + doc2.body.appendChild(template);
|
| +
|
| + assert_equals(template.ownerDocument, template2.ownerDocument,
|
| + 'Template node owner document should be changed');
|
| + assert_equals(template.content.ownerDocument, template2.content.ownerDocument,
|
| + 'Template content owner document should be changed');
|
| +
|
| + assert_equals(template.content.querySelector('div').ownerDocument,
|
| + template2.content.ownerDocument,
|
| + 'Template content descendants owner document should be changed');
|
| +
|
| +}, 'Changing of template element\'s node document. ' +
|
| + 'Test that ownerDocument of a not empty template and its content changes');
|
| +
|
| +
|
| +test(function() {
|
| + var doc1 = newHTMLDocument();
|
| + doc1.body.innerHTML = ''
|
| + + '<template id="tmpl"><div>Div content</div> And some more text'
|
| + + '<template id="tmpl2"><div>Template content</div></template>'
|
| + + '</template>';
|
| +
|
| + var template = doc1.querySelector('#tmpl');
|
| +
|
| + assert_equals(template.ownerDocument, doc1, 'Wrong template node owner document');
|
| + assert_not_equals(template.content.ownerDocument, doc1,
|
| + 'Wrong template content owner document');
|
| +
|
| + var nestedTemplate = template.content.querySelector('#tmpl2');
|
| +
|
| + assert_equals(nestedTemplate.ownerDocument, template.content.ownerDocument,
|
| + 'Wrong nested template node owner document');
|
| + assert_equals(nestedTemplate.content.ownerDocument, template.content.ownerDocument,
|
| + 'Wrong nested template content owner document');
|
| +
|
| + var doc2 = newHTMLDocument();
|
| + var template2 = doc2.createElement('template');
|
| + doc2.body.appendChild(template);
|
| +
|
| + assert_equals(template.ownerDocument, template2.ownerDocument,
|
| + 'Template node owner document should be changed');
|
| + assert_equals(template.content.ownerDocument, template2.content.ownerDocument,
|
| + 'Template content owner document should be changed');
|
| + assert_equals(template.content.querySelector('div').ownerDocument,
|
| + template2.content.ownerDocument,
|
| + 'Template content descendants owner document should be changed');
|
| +
|
| + assert_equals(nestedTemplate.ownerDocument,
|
| + template2.content.ownerDocument,
|
| + 'Nested template node owner document should be changed');
|
| + assert_equals(nestedTemplate.content.ownerDocument,
|
| + template2.content.ownerDocument,
|
| + 'Nested template content owner document should be changed');
|
| + assert_equals(nestedTemplate.content.querySelector('div').ownerDocument,
|
| + template2.content.ownerDocument,
|
| + 'Owner document of the nested template content descendants should be changed');
|
| +
|
| +}, 'Changing of template element\'s node document. ' +
|
| + 'Test that ownerDocument of nested template and its content changes');
|
| +
|
| +
|
| +testInIFrame('../resources/template-contents.html', function(context) {
|
| + var doc1 = context.iframes[0].contentDocument;
|
| +
|
| + var template = doc1.body.querySelector('template');
|
| +
|
| + var doc2 = newHTMLDocument();
|
| + var template2 = doc2.createElement('template');
|
| + doc2.body.appendChild(template);
|
| +
|
| + assert_equals(template.ownerDocument, template2.ownerDocument,
|
| + 'Template node owner document should be changed');
|
| + assert_equals(template.content.ownerDocument,
|
| + template2.content.ownerDocument,
|
| + 'Template content owner document should be changed');
|
| + assert_equals(template.content.querySelector('div').ownerDocument,
|
| + template2.content.ownerDocument,
|
| + 'Template content descendants owner document should be changed');
|
| +
|
| +}, 'Changing of template element\'s node document. ' +
|
| + 'Test document loaded from a file');
|
| +
|
| +
|
| +testInIFrame('../resources/template-contents.html', function(context) {
|
| + var doc1 = context.iframes[0].contentDocument;
|
| +
|
| + var doc2 = newHTMLDocument();
|
| + var template = doc2.createElement('template');
|
| + var div = doc2.createElement('div');
|
| + template.content.appendChild(div);
|
| +
|
| + doc1.body.appendChild(template);
|
| +
|
| + assert_not_equals(template.ownerDocument, doc2,
|
| + 'Template node owner document should be changed');
|
| + assert_not_equals(template.content.ownerDocument, doc2,
|
| + 'Template content owner document should be changed');
|
| + assert_not_equals(div.ownerDocument, doc2,
|
| + 'Template content descendants owner document should be changed');
|
| +
|
| + assert_equals(template.ownerDocument, doc1,
|
| + 'Template node owner document should be changed');
|
| + // doc1 has browsing context so it cannot be template.content.ownerDocument
|
| + assert_not_equals(template.content.ownerDocument, doc1,
|
| + 'Template content owner document should be a new document');
|
| + assert_equals(div.ownerDocument, template.content.ownerDocument,
|
| + 'Template content descendants owner document should be ' +
|
| + 'template content document owner');
|
| +
|
| +}, 'Changing of template element\'s node document. ' +
|
| + 'Adobt template element into a document that has a browsing context');
|
| +
|
| +
|
| +testInIFrame('../resources/template-contents.html', function(context) {
|
| + var doc1 = context.iframes[0].contentDocument;
|
| +
|
| + var template = doc1.querySelector('template');
|
| + var div = template.content.querySelector('div');
|
| + var templateContentOwner = template.content.ownerDocument;
|
| +
|
| + var doc2 = document;
|
| +
|
| + doc2.body.appendChild(template);
|
| +
|
| +
|
| + assert_not_equals(template.ownerDocument, doc1,
|
| + 'Template node owner document should be changed');
|
| + assert_not_equals(template.content.ownerDocument, templateContentOwner,
|
| + 'Template content owner document should be changed');
|
| + assert_not_equals(div.ownerDocument, templateContentOwner,
|
| + 'Template content descendants owner document should be changed');
|
| +
|
| + assert_equals(template.ownerDocument, doc2,
|
| + 'Template node owner document should be changed');
|
| + // doc2 has browsing context, so it cannot be template.content.ownerDocument
|
| + assert_not_equals(template.content.ownerDocument, doc2,
|
| + 'Template content owner document should be a new document');
|
| + assert_equals(div.ownerDocument, template.content.ownerDocument,
|
| + 'Template content descendants owner document should be ' +
|
| + 'template content document owner');
|
| +
|
| +}, 'Changing of template element\'s node document. ' +
|
| + 'Test the case when both old and new owner documents of template element ' +
|
| + 'have browsing context');
|
| +
|
| +</script>
|
| +</body>
|
| +</html>
|
|
|