| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <meta name="author" title="Ryosuke Niwa" href="mailto:rniwa@webkit.org"> | |
| <link rel="help" href="https://github.com/whatwg/html/issues/10854"> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| </head> | |
| <body> | |
| <script> | |
| test(() => { | |
| const shadowRoot = document.createElement('div').attachShadow({mode: 'closed'}); | |
| assert_equals(shadowRoot.customElementRegistry, window.customElements); | |
| }, 'A newly attached disconnected ShadowRoot should use the global registry by default'); | |
| test(() => { | |
| const host = document.body.appendChild(document.createElement('div')); | |
| const shadowRoot = host.attachShadow({mode: 'closed'}); | |
| assert_equals(shadowRoot.customElementRegistry, window.customElements); | |
| }, 'A newly attached connected ShadowRoot should use the global registry by default'); | |
| test(() => { | |
| const registry = new CustomElementRegistry; | |
| const shadowRoot = document.createElement('div').attachShadow({mode: 'closed', customElementRegistry: registry}); | |
| assert_equals(shadowRoot.customElementRegistry, registry); | |
| }, 'A newly attached disconnected ShadowRoot should use the scoped registry if explicitly specified in attachShadow'); | |
| test(() => { | |
| const registry = new CustomElementRegistry; | |
| const host = document.body.appendChild(document.createElement('div')); | |
| const shadowRoot = host.attachShadow({mode: 'closed', customElementRegistry: registry}); | |
| assert_equals(shadowRoot.customElementRegistry, registry); | |
| }, 'A newly attached connected ShadowRoot should use the scoped registry if explicitly specified in attachShadow'); | |
| test(() => { | |
| const host = document.body.appendChild(document.createElement('div')); | |
| assert_throws_js(TypeError, () => host.attachShadow({mode: 'closed', customElementRegistry: null})) | |
| }, 'attachShadow() should throw for a null customElementRegistry value'); | |
| </script> | |
| </body> | |
| </html> |