| <script> |
| 'use strict'; |
| |
| let constructors = []; |
| |
| test(() => { |
| assert_equals(constructors.length, 0); |
| |
| class MyElement extends HTMLElement { |
| constructor() { |
| super(); |
| constructors.push(this); |
| } |
| } |
| |
| customElements.define('a-a', MyElement); |
| |
| // createElement should synchronously call constructor. |
| let a = document.createElement('a-a'); |
| assert_equals(constructors.length, 1); |
| assert_equals(a.ownerDocument, document); |
| |
| let importDoc = document.currentScript.ownerDocument; |
| |
| // TODO(kochi): crbug.com/640465 createElement returns wrong ownerDocument |
| // createElement should work in imported document. |
| let b = importDoc.createElement('a-a') |
| assert_equals(b.ownerDocument, importDoc); |
| assert_equals(constructors.length, 2); |
| |
| // new MyElement() should synchronously call constructor. |
| let c = new MyElement(); |
| assert_equals(c.ownerDocument, document); |
| assert_equals(constructors.length, 3); |
| |
| assert_array_equals(constructors, [a, b, c]); |
| }, 'createElement() and new MyElement should work in imported document.'); |
| </script> |