| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta name='author' title='Google' href='http://www.google.com'> |
| <meta name='assert' content='document attributes that returns HTMLCollection should not expose nodes in shadow tree.'> |
| <link rel='help' href='https://w3c.github.io/webcomponents/spec/shadow/'> |
| <script src='/resources/testharness.js'></script> |
| <script src='/resources/testharnessreport.js'></script> |
| </head> |
| <body> |
| <template id='collection-template'> |
| <img> |
| <embed></embed> |
| <applet></applet> |
| <object type='application/x-java-applet'></object> |
| <a href='http://example.com'></a> |
| <a name='test'></a> |
| <form name='test'></form> |
| <script></script> |
| </template> |
| <div id='doc'></div> |
| <div id='host-open'></div> |
| <div id='host-closed'></div> |
| </body> |
| <script> |
| 'use strict'; |
| |
| function fillTemplate(root, prefix) { |
| var tmpl = document.getElementById('collection-template'); |
| root.appendChild(document.importNode(tmpl.content, true)); |
| for (var i = 0; i < root.childNodes.length; ++i) { |
| var el = root.childNodes[i]; |
| if (el.nodeType != 1) |
| continue; |
| el.id = prefix + el.tagName.toLowerCase(); |
| } |
| } |
| |
| // Construct subtree with 'doc-*' ids. |
| var doc = document.getElementById('doc'); |
| fillTemplate(doc, 'doc-'); |
| |
| // Construct shadow subtree with 'shadow-*' ids. |
| var host = document.getElementById('host-open'); |
| var shadow = host.attachShadow({mode: 'open'}); |
| fillTemplate(shadow, 'shadow-open-'); |
| |
| host = document.getElementById('host-closed'); |
| shadow = host.attachShadow({mode: 'closed'}); |
| fillTemplate(shadow, 'shadow-closed-'); |
| |
| function testCollection(collection) { |
| var elements = document[collection]; |
| assert_greater_than(elements.length, 0, 'document.' + collection + ' should have at least 1 element.'); |
| for (var i = 0; i < elements.length; ++i) { |
| if (elements[i].id) { |
| assert_equals(elements[i].id.indexOf('shadow-'), -1, 'document.' + collection + ' should not contain elements in shadow tree.'); |
| } |
| } |
| } |
| |
| var testParams = [ |
| ['document.scripts should not contain shadow nodes', 'scripts'], |
| ['document.all should not contain shadow nodes', 'all'], |
| ['document.forms should not contain shadow nodes', 'forms'], |
| ['document.images should not contain shadow nodes', 'images'], |
| ['document.links should not contain shadow nodes', 'links'], |
| ['document.anchors should not contain shadow nodes', 'anchors'], |
| ['document.embeds should not contain shadow nodes', 'embeds'], |
| ['document.plugins should not contain shadow nodes', 'plugins'], |
| ['document.applets should not contain shadow nodes', 'applets']]; |
| |
| generate_tests(testCollection, testParams); |
| |
| </script> |
| </html> |