| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>Shadow DOM: Element interface shadowRoot attribute</title> |
| <meta name="author" title="Ryosuke Niwa" href="mailto:rniwa@webkit.org"> |
| <meta name="assert" content="shadowRoot attribute on Element interface must return the associated open shadow tree if there is one"> |
| <link rel="help" href="https://w3c.github.io/webcomponents/spec/shadow/#the-shadowroot-interface"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <link rel='stylesheet' href='/resources/testharness.css'> |
| </head> |
| <body> |
| <div id="log"></div> |
| <script> |
| |
| test(function () { |
| assert_true('shadowRoot' in Element.prototype, 'shadowRoot must be defined on Element prototype'); |
| assert_true('shadowRoot' in document.createElement('div'), 'shadowRoot must be defined on an instance of div element'); |
| assert_false('shadowRoot' in Node.prototype, 'shadowRoot must not be defined on Node prototype'); |
| assert_false('shadowRoot' in Text.prototype, 'shadowRoot must not be defined on Text prototype'); |
| assert_false('shadowRoot' in document.createTextNode(''), 'shadowRoot must not be defined on an instance of Text node'); |
| assert_false('shadowRoot' in Comment.prototype, 'shadowRoot must not be defined on Comment prototype'); |
| assert_false('shadowRoot' in document.createComment(''), 'shadowRoot must not be defined on an instance of Comment node'); |
| assert_false('shadowRoot' in Document.prototype, 'shadowRoot must not be defined on Document prototype'); |
| assert_false('shadowRoot' in document, 'shadowRoot must not be defined on an instance of Document'); |
| assert_false('shadowRoot' in DocumentFragment.prototype, 'shadowRoot must not be defined on DocumentFragment prototype'); |
| assert_false('shadowRoot' in (new DOMParser).parseFromString('', 'text/html'), 'shadowRoot must not be defined on an instance of DocumentFragment node'); |
| }, 'shadowRoot must be defined on Element prototype'); |
| |
| test(function () { |
| var host = document.createElement('div'); |
| assert_equals(host.shadowRoot, null, 'shadowRoot must return null when the host does not have a shadow tree attached to it'); |
| |
| var openShadowRoot = host.attachShadow({mode: 'open'}); |
| assert_equals(host.shadowRoot, openShadowRoot, 'shadowRoot must return the open shadow root attachShadow attached'); |
| }, 'shadowRoot attribute must return the open shadow root associated with the element'); |
| |
| test(function () { |
| var host = document.createElement('div'); |
| host.attachShadow({mode: 'closed'}); |
| assert_equals(host.shadowRoot, null); |
| }, 'shadowRoot attribute must return null if the shadow root attached to the element is closed'); |
| |
| </script> |
| </body> |
| </html> |