Move document.defineElement to customElements.define
[WebKit-https.git] / LayoutTests / fast / custom-elements / parser / parser-constructs-custom-elements.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <title>Custom Elements: Changes to the HTML parser</title>
5 <meta name="author" title="Ryosuke Niwa" href="mailto:rniwa@webkit.org">
6 <meta name="assert" content="HTML parser creates a custom element">
7 <script src="../../../resources/testharness.js"></script>
8 <script src="../../../resources/testharnessreport.js"></script>
9 <link rel='stylesheet' href='../../../resources/testharness.css'>
10 </head>
11 <body>
12 <div id="log"></div>
13 <my-custom-element id="instance1"></my-custom-element>
14 <script>
15
16 class MyCustomElement extends HTMLElement { };
17
18 test(function () {
19     var customElement = document.getElementById('instance1');
20
21     assert_true(customElement instanceof HTMLElement, 'An unresolved custom element must be an instance of HTMLElement');
22     assert_false(customElement instanceof MyCustomElement, 'An unresolved custom element must NOT be an instance of that custom element');
23     assert_equals(customElement.localName, 'my-custom-element');
24     assert_equals(customElement.namespaceURI, 'http://www.w3.org/1999/xhtml', 'A custom element HTML must use HTML namespace');
25
26 }, 'HTML parser must NOT create a custom element before customElements.define is called');
27
28 customElements.define('my-custom-element', MyCustomElement);
29
30 </script>
31 <my-custom-element id="instance2"></my-custom-element>
32 <script>
33
34 test(function () {
35     var customElement = document.getElementById('instance2');
36
37     assert_true(customElement instanceof HTMLElement, 'A resolved custom element must be an instance of HTMLElement');
38     assert_false(customElement instanceof HTMLUnknownElement, 'A resolved custom element must NOT be an instance of HTMLUnknownElement');
39     assert_true(customElement instanceof MyCustomElement, 'A resolved custom element must be an instance of that custom element');
40     assert_equals(customElement.localName, 'my-custom-element');
41     assert_equals(customElement.namespaceURI, 'http://www.w3.org/1999/xhtml', 'A custom element HTML must use HTML namespace');
42
43 }, 'HTML parser must create a defined custom element before executing inline scripts');
44
45 </script>
46 </body>
47 </html>